echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075) 交流學習。
什麼是死信隊列?
- 死信隊列:DLX,dead-letter-exchange,可以成爲死信交換器,也有人稱爲死信郵箱。
- 利用DLX,當消息在一個隊列中變成死信 (dead message) 之後,它能被重新publish到另一個Exchange,這個Exchange就是DLX
什麼情況下消息會成爲死信?
- 消息被拒絕(basic.reject / basic.nack),並且requeue = false
- 消息TTL過期
- 隊列達到最大長度
死信的產生在業務中其實是一件很平常的事情,以上幾個就是常見的死信產生原因。但是我們介紹死信隊列提到,死信交換器,其實他也是一個普通的交換器,我們也可以使用死信交換器來定義一些死信,但是並不常見這種應用。
死信隊列的應用場景
一般用在較爲重要的業務隊列中,確保未被正確消費的消息不被丟棄,一般發生消費異常可能原因主要有由於消息信息本身存在錯誤導致處理異常,處理過程中參數校驗異常,或者因網絡波動導致的查詢異常等等,當發生異常時,當然不能每次通過日誌來獲取原消息,然後讓運維幫忙重新投遞消息。
死信隊列的消息應該怎麼處理
- 1、丟棄,如果不是很重要,可以選擇丟棄
- 2、通過配置死信隊列,可以讓未正確處理的消息暫存到另一個隊列中,待後續排查清楚問題再來處理這些信息
- 3、手工編寫一個警告,消費死信隊列,直接入庫