Description 📄 이슈 내용 (기능 요약)
Inventory 서비스에서 카프카 메시지 소비 실패 시 이를 격리 보관 및 모니터링하기 위한 DLT 컨슈머를 구축
DLT 연동 테스트 중 발견된 토픽 충돌, 역직렬화 보안 정책, OSIV 커넥션 점유 등을 수정하여 파이프라인 안정화
📝 상세 내용 및 요구사항
DLT 컨슈머 구축 (격리 병동):
3회 재시도 후에도 실패한 '독성 메시지'를 처리하기 위해 DeadLetterConsumer를 추가.
단일 텍스트 블록 로깅 및 KafkaHeaders.DLT_EXCEPTION_STACKTRACE를 추출하여 원본 페이로드와 상세 에러 원인을 파악할 수 있도록 구현.
토픽 이름 충돌(Topic Collision) 결함 수정:
기존에 오더의 '명령'과 인벤토리의 '결과'가 stock.restored라는 동일한 토픽을 사용하여 발생하던 역직렬화 에러 및 장애 도미노 현상 해결.
오더 -> 인벤토리 명령 토픽을 order.stock-restore.requested로 명확히 분리.
Kafka 역직렬화(Deserialization) 신뢰 정책 완화:
spring.json.trusted.packages가 특정 패키지로 제한되어 타 서비스(Order 등)의 이벤트를 입구에서 차단하던 문제 해결.
신뢰 범위를 미슐랭 전체 도메인("com.michelet.*")으로 확장하여 안전하게 매핑.
OSIV 비활성화 및 JpaConfig 분리 (성능/테스트 최적화):
API 환경에서 불필요한 DB 커넥션 점유(Connection Timeout 유발)를 막기 위해 spring.jpa.open-in-view: false 적용.
@WebMvcTest 구동 시 메인 클래스의 @EnableJpaRepositories로 인해 발생하던 DB Bean 생성 에러를 막기 위해 JpaConfig로 설정 분리.
✅ 체크리스트 (구현할 내용)
📍 레퍼런스
Spring Kafka DLT (Dead Letter Topic) Pattern
Catalog 서비스의 DLT 컨슈머 구축 사례 및 OSIV 커넥션 튜닝
Reactions are currently unavailable
You can’t perform that action at this time.
📄 이슈 내용 (기능 요약)
📝 상세 내용 및 요구사항
DeadLetterConsumer를 추가.KafkaHeaders.DLT_EXCEPTION_STACKTRACE를 추출하여 원본 페이로드와 상세 에러 원인을 파악할 수 있도록 구현.stock.restored라는 동일한 토픽을 사용하여 발생하던 역직렬화 에러 및 장애 도미노 현상 해결.order.stock-restore.requested로 명확히 분리.spring.json.trusted.packages가 특정 패키지로 제한되어 타 서비스(Order 등)의 이벤트를 입구에서 차단하던 문제 해결."com.michelet.*")으로 확장하여 안전하게 매핑.spring.jpa.open-in-view: false적용.@WebMvcTest구동 시 메인 클래스의@EnableJpaRepositories로 인해 발생하던 DB Bean 생성 에러를 막기 위해JpaConfig로 설정 분리.✅ 체크리스트 (구현할 내용)
DeadLetterConsumer클래스 생성 및*.DLT텍스트 블록 로깅 구현OrderEventConsumer의 수신 토픽을order.stock-restore.requested로 변경application.yml내spring.json.trusted.packages값을"com.michelet.*"로 변경application.yml내spring.jpa.open-in-view: false속성 추가@EnableJpaRepositories를 제거하고JpaConfig클래스로 분리📍 레퍼런스