안녕하세요 Minjun Lee
이 증상은 보통 워커가 처리할 수 없는 메시지를 nack/reject 하면서 requeue=true로 반환할 때 발생합니다. 이런 경우에는 원본 큐에 Dead Letter Exchange(DLX)를 연결하고, 처리 실패 메시지가 일정 횟수 이상 재시도되면 Dead Letter Queue(DLQ)로 이동하도록 설정하는 것을 추천드립니다.
예를 들어 메인 큐에 x-dead-letter-exchange 속성을 지정한 뒤, 소비자에서는 복구 불가능한 오류가 발생했을 때 requeue=false로 basic.reject 또는 basic.nack를 호출하면 메시지가 DLQ로 이동합니다. 이렇게 하면 동일한 잘못된 메시지가 계속 재처리되는 무한 루프를 방지할 수 있습니다. 또한 TTL(Time-To-Live)과 재시도 큐를 함께 구성하면 일시적인 장애에 대해서는 몇 차례 재시도한 후 최종적으로 DLQ로 보내는 패턴도 구현할 수 있습니다. 운영 환경에서는 DLQ에 쌓인 메시지를 별도로 모니터링하여 근본 원인을 분석하는 것이 매우 중요합니다.
답변이 도움이 되셨다면 Accept Answer를 눌러주시면 감사하겠습니다