什么是死信交换机
什么是死信?
當一個隊列中的消息滿足下列情況之一時,可以成為死信(dead letter):
-
消費者使用basic.reject或 basic.nack聲明消費失敗,并且消息的requeue參數設置為false
-
消息是一個過期消息,超時無人消費
-
要投遞的隊列消息滿了,無法投遞
如果這個包含死信的隊列配置了dead-letter-exchange屬性,指定了一個交換機,那么隊列中的死信就會投遞到這個交換機中,而這個交換機稱為死信交換機(Dead Letter Exchange,檢查DLX)。
如圖,一個消息被消費者拒絕了,變成了死信:
因為simple.queue綁定了死信交換機 dl.direct,因此死信會投遞給這個交換機:
如果這個死信交換機也綁定了一個隊列,則消息最終會進入這個存放死信的隊列:
另外,隊列將死信投遞給死信交換機時,必須知道兩個信息:
-
死信交換機名稱
-
死信交換機與死信隊列綁定的RoutingKey
這樣才能確保投遞的消息能到達死信交換機,并且正確的路由到死信隊列。
總結
- 上一篇: 消费失败重试机制
- 下一篇: 利用死信交换机接收死信