핵심 요약
여기어때가 Kafka 컨슈머 실패를 non-blocking 재시도와 공통 DLT로 표준화한 설계와 운영 사례를 공유합니다.
구현 방법
- 3회×3분 고정 backoff, SINGLE_TOPIC 재시도
- 예외 분기: KafkaRetryException은 재시도, 그 외는 DLT
- CommonDltMessage로 원본 좌표(origin)와 원문 보존
- 어노테이션 한 줄 적용(@CommonKafkaRetry)으로 도입 용이
- RetryTopicConfigurationSupport 확장으로 네이밍/DLT 발행 교체
- DelegatingByTypeSerializer로 역직렬화 실패 원문 보존
주요 결과
- 재시도는 opt-in, 비효율 재시도 감소
- 공통 토픽(common.dead-letter)으로 DLT 관리
- 원본 좌표/원문 보존으로 재처리 가능
