오류와 실패한 메시지 처리는 안정적인 Kafka consumer에 중요합니다 — 메시지 처리가 실패할 때 무엇을 할지(재시도, 건너뛰기, 또는 dead letter queue로 라우팅) 결정. 적절한 오류 처리는 데이터 유실과 멈춘 consumer를 방지합니다.
문제: 처리 실패
consumer가 메시지 처리에 실패할 때(나쁜 데이터, 다운스트림 실패, 버그):
→ 영원히 BLOCKING 재시도 → consumer가 "poison" 메시지에 STUCK(진행 불가)
→ 조용히 건너뛰기 → 데이터 LOSS(메시지 유실)
→ 크래시 → consumer 재시작, 재처리, 다시 멈출 수 있음
→ 의도적인 오류 처리 전략이 필요.
오류 처리 전략
✓ RETRY(한도와 함께) → 일시적 실패 재시도(백오프와 함께); 하지만 재시도 한도
(영구적 실패에 영원히 재시도 금지)
✓ DEAD LETTER QUEUE(DLQ) → 재시도 실패 후 메시지를 별도 DLQ TOPIC으로 전송 →
consumer가 진행(멈추지 않음); DLQ는 나중에 검사/재처리
→ 처리할 수 없는 메시지를 다루는 표준 방법(블로킹 + 유실 회피)
✓ 일시적(재시도) 대 영구적(DLQ/건너뛰기) 실패 구분
✓ 멱등 처리 → 안전한 재시도/재처리(at-least-once → 중복)
