Skip to content

feat/33 - DLT 컨슈머 - #34

Merged
ji-circle merged 2 commits into
devfrom
feat/33-kafka-dlt-consumer-inv
May 14, 2026
Merged

ji-circle merged 2 commits into
devfrom
feat/33-kafka-dlt-consumer-inv

Conversation

@ji-circle

@ji-circle ji-circle commented May 14, 2026

Copy link
Copy Markdown
Contributor

📝 작업 내용

이번 PR에서 작업한 내용을 설명해주세요.

  • DLT 컨슈머 구축
  • 토픽 이름 충돌 결함 수정
  • Kafka 역직렬화 신뢰 정책 완화,
  • OSIV 비활성화 및 JpaConfig 분리

🚀 주요 변경 사항

완료한 이슈 번호
Close #33
관련된 이슈 번호 (닫고 싶지 않은 경우)
Related to #

✅ 자체 체크리스트 (필수)

  • ./gradlew build 실행 결과 정상 (인증샷 첨부)
  • IntelliJ HTTP Client 테스트 완료 (인증샷 첨부)
  • 팀 내 컨벤션 준수 및 불필요한 로그, import 제거
  • 중요한 변경 사항이 팀에 공유되었는지

📸 테스트 인증샷

빌드 결과 및 IntelliJ HTTP Client 실행 화면을 여기에 첨부해 주세요.

스크린샷 2026-05-14 오후 2 59 30 스크린샷 2026-05-14 오후 2 59 37 스크린샷 2026-05-14 오후 2 59 44 스크린샷 2026-05-14 오후 2 59 51 스크린샷 2026-05-14 오후 3 00 05 스크린샷 2026-05-14 오후 3 01 22

💬 리뷰어 전달사항 (선택)

특별히 봐주었으면 하는 부분이나 논의가 필요한 점을 적어주세요.

  • 사진으로 첨부한 테스트는 OrderEventConsumer의 consumeStockRestoredEvent 에서 무조건 에러를 내도록 수정해 진행했던 테스트입니다. pr로 올린 코드에선 해당 에러 발생 부분을 삭제했습니다. (그냥 조용히 DLT로 갑니다)


📎 참고 자료

관련 문서, 레퍼런스 링크 등이 있다면 여기에 첨부해주세요.

Summary by CodeRabbit

  • 신규 기능

    • JPA 관련 설정 추가로 데이터 접근 구성 개선
    • 데드레터(DLT) 메시지 수집기 추가로 메시징 오류 감지 강화
  • 개선 사항

    • 재고 복구 요청 토픽 구독으로 재고 요청 처리 흐름 업데이트
    • 애플리케이션 설정 최적화(세션 관리 비활성화 및 메시지 직렬화 신뢰 패키지 확장)

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 14, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5d505615-a9a9-49e4-9795-e53b2e156ae2

📥 Commits

Reviewing files that changed from the base of the PR and between 4d367a0 and 6d5ed3e.

📒 Files selected for processing (3)
  • src/main/java/com/michelet/inventory/infrastructure/messaging/DeadLetterConsumer.java
  • src/main/java/com/michelet/inventory/infrastructure/messaging/OrderEventConsumer.java
  • src/main/resources/application.yml
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/main/java/com/michelet/inventory/infrastructure/messaging/DeadLetterConsumer.java
  • src/main/resources/application.yml
  • src/main/java/com/michelet/inventory/infrastructure/messaging/OrderEventConsumer.java

📝 Walkthrough

Walkthrough

Kafka DLT 컨슈머 추가, OrderEventConsumer의 토픽을 restore-request로 변경, JPA 설정을 분리해 OSIV 비활성화, 그리고 Kafka JSON 신뢰 패키지와 토픽 매핑을 확장합니다.

Changes

Kafka DLT 및 메시지 파이프라인 안정화

Layer / File(s) Summary
JPA 설정 분리 및 OSIV 비활성화
src/main/java/com/michelet/inventory/infrastructure/config/JpaConfig.java, src/main/resources/application.yml
JpaConfig 추가로 JPA 레포지토리 스캔을 분리하고 spring.jpa.open-in-view: false 설정을 추가합니다.
Kafka 메시지 신뢰 패키지 및 토픽 매핑
src/main/resources/application.yml
spring.json.trusted.packages를 확장하고 inventory Kafka 토픽 매핑에 restore-request 항목(order.stock-restore.requested)을 추가합니다.
Dead Letter Topic 컨슈머 구현
src/main/java/com/michelet/inventory/infrastructure/messaging/DeadLetterConsumer.java
.DLT 토픽을 수신하는 DeadLetterConsumer를 추가하고, DLT 헤더(원본 토픽·예외 메시지·스택트레이스)를 추출해 멀티라인 치명 로그를 남깁니다.
OrderEventConsumer 토픽 마이그레이션
src/main/java/com/michelet/inventory/infrastructure/messaging/OrderEventConsumer.java
리스너가 기존 restored 토픽에서 restore-request 토픽으로 변경되며 소비자 핸들러명이 갱신됩니다.

Sequence Diagram(s)

sequenceDiagram
  participant KafkaCluster as Kafka Cluster
  participant OrderConsumer as OrderEventConsumer
  participant DeadLetterConsumer as DeadLetterConsumer
  participant Logger as Logger
  KafkaCluster->>OrderConsumer: 원본 메시지 전송 (처리 시도)
  OrderConsumer->>KafkaCluster: 처리 실패 -> 메시지 DLT로 라우팅
  KafkaCluster->>DeadLetterConsumer: DLT 메시지 전송 (헤더 포함)
  DeadLetterConsumer->>DeadLetterConsumer: DLT 헤더 추출 (originalTopic, exception, stacktrace)
  DeadLetterConsumer->>Logger: 멀티라인 치명 로그 기록 (payload 및 헤더)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

Possibly related PRs

Suggested reviewers

  • githyj-jang
  • Jinyoung-Kim96
  • qldo
  • Sehi55
  • jihxonx

Poem

🐰
DLT에 눕던 메시지여, 이제 들려라 —
토픽은 갈라졌고 로그는 밝게 빛나네.
JPAs는 자리를 비우고, 패키지는 넓어졌네.
토끼가 뛰어와 축배를 들지요 🥕✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 'feat/33 - DLT 컨슈머'로 주요 변경사항인 DLT(Dead Letter Topic) 컨슈머 구축을 명확히 나타내고 있습니다.
Linked Issues check ✅ Passed 코드 변경사항이 연결된 이슈 #33의 모든 요구사항을 충족합니다: DeadLetterConsumer 구현, 토픽명 변경, 신뢰 패키지 확장, OSIV 비활성화, JpaConfig 분리 완료.
Out of Scope Changes check ✅ Passed 모든 변경사항이 이슈 #33의 요구사항과 일치하며, 범위를 벗어난 변경사항은 없습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/33-kafka-dlt-consumer-inv

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot]

This comment was marked as resolved.

@jihxonx jihxonx left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다!

@ji-circle
ji-circle merged commit e5f7050 into dev May 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 카프카 에러 격리를 위한 DLT 컨슈머 구축

2 participants