**Dead letter queue(DLQ)**는 메시지가 처리될 수 없거나 특정 조건(reject, 만료, queue 가득 참)을 충족할 때 가는 곳입니다. DLQ는 문제 있는 메시지가 손실되거나 처리를 막는 것을 방지하여, 나중에 검사하고 처리할 수 있게 합니다.
dead letter queue란
DEAD LETTER QUEUE → 정상적으로 전달/처리될 수 없었던 메시지를 받는 queue:
→ 메시지는 다음 경우 "dead-letter"됨 (DLQ로 라우팅):
- REJECT/nack됨 (consumer가 처리 불가) 그리고 requeue 안 함
- 만료(EXPIRE)됨 (메시지 TTL 초과)
- queue의 MAX LENGTH 초과 (overflow)
→ DLQ는 이들을 잃지 않고 검사/처리를 위해 수집
→ 문제 있는 메시지를 위한 "보관 구역"
dead letter queue가 중요한 이유
✓ 실패한 메시지를 잃지 않음 → DLQ로 감 (버려지지 않음) → 나중에 검사/재처리
✓ 처리를 막지 않음 → 항상 실패하는 "poison" 메시지를 옆으로 치움 (영원히 재시도하며
queue를 막지 않음)
✓ 가시성(VISIBILITY) → DLQ 메시지가 문제를 드러냄 (잘못된 데이터, 버그, 다운스트림 실패)
✓ 실패를 우아하게 처리 → 재시도 로직, 수동 개입, DLQ 알림
