Ssup2 Blog logo Ssup2 Blog

RabbitMQ의 DLX(Dead Letter Exchange)를 분석한다.

1. RabbitMQ DLX(Dead Letter Exchange)

RabbitMQ DLX(Dead Letter Exchange)는 Dead Letter가 된 Massage를 지정된 Exchange에 전송하는 기능이다. Message가 Dead Letter가 되는 조건은 다음의 3가지가 존재한다.

[그림 1] RabbitMQ DLX(Dead Letter Exchange)

[그림 1]은 Consumer의 Message 거절에 따른 RabbitMQ의 DLX 기능의 처리과정을 나타내고 있다. Exchange A와 Exchange B는 Queue A와 Binding 되어 있다. Queue A는 DLX로 Exchange B가 설정되어 있다. Dead Letter Routing Key는 DLX로 전송하는 Message의 Routing Key를 설정하는 옵션이다. Queue A의 Dead Letter Routing Key는 "ssup2" 문자열로 설정되어 있다. Queue에 Dead Letter Routing Key는 반드시 설정될 필요는 없으며 필요에 따라 설정하면 된다. Message 처리 과정은 다음과 같다.

Dead Letter가 된 Message의 "x-death" Header에는 Message가 Dead Letter가 된 이유 및 관련 정보가 저장되어 있다. "x-death" Header에 저장되어 있는 주요 정보는 다음과 같다.

2. 참조