RabbitMQ에서 처리되지 않은 메시지가 계속 재전송될 때, Dead Letter Exchange(DLX)는 어떻게 설정하나요 ?

Minjun Lee 60 평판 포인트
2026-10-09T06:30:39.36+00:00

처리할 수 없는 메시지 때문에 워커가 계속 오류를 내며 같은 메시지를 반복적으로 재큐잉하고 있습니다. 이런 경우 문제 메시지가 무한 반복되지 않도록 RabbitMQ의 Dead Letter Exchange(DLX)를 어떻게 구성할 수 있을까요 ?

비즈니스용 Windows | Windows 365 Enterprise
댓글 0개 설명 없음

답변 1개

정렬 기준: 가장 유용함
  1. HLBui 13,420 평판 포인트 독립 자문가
    2026-10-09T07:05:59.2733333+00:00

    안녕하세요 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를 눌러주시면 감사하겠습니다

    이 대답이 도움이 되었나요?

    댓글 0개 설명 없음

답변

질문 작성자는 답변을 '승인됨'으로 표시하고, 중재자는 답변을 '추천됨'으로 표시할 수 있습니다. 이를 통해 사용자는 해당 답변이 작성자의 문제를 해결했다는 것을 알 수 있습니다.