文章目錄
- TTL
- 死信隊列
- 消息成為死信的三種情況
- 隊列如何綁定死信交換機
- 延遲隊列
- RabbitMQ如何實現延遲隊列
總結來源B站黑馬程序員
TTL
TTLTTL(Time To Live):存活時間/過期時間當信息到達存活時間后,還沒有被消費,會被自動清除。RabbitMQ可以對消息設置過期時間,也可以對整個隊列(Queue)設置過期時間
死信隊列
DLX(Dead Letter Exchange):死信交換機,當消息成為Dead Message后,可以被重新發送到另一個交換機,這個交換機就是DLX死信隊列原理:當給正常的隊列設置過期時間后,在這個過期時間內消息沒有被消費的消息會被丟棄,但如果這個正常的隊列綁定了一個死信交換機,那么隊列里過期沒有被消費的消息將不會直接被丟棄而是被直接發送給死信交換機死信交換機再將過期的信息發送給其他的隊列(死信隊列),從而過期的消息又可以被重新消費了。
消息成為死信的三種情況
死信的三種情況1.隊列消息長度達到限制2.消費者拒絕消費消息,basicNack/basicReject并且不把消息重新放入原目標隊列,requeue=false3.原隊列存在消息過期設置,消息到達超時時間未被消費。
隊列如何綁定死信交換機
隊列綁定死信交換機給對壘設置參數:x-dead-letter-exchage和x-dead-letter-routing-key
延遲隊列
延遲隊列:即消息進入隊列后不會立即被消費,只有到達指定時間(過期時間TTL)后,才會被消費。需求場景:1.下單后,30分鐘未支付,取消訂單,回滾庫存2.新用戶注冊成功7天后,發送消息問候。
RabbitMQ如何實現延遲隊列
RabbitMQ本身并未直接提供延遲隊列的功能。但我們可以將"TTL"+"死信隊列"的組合方式實現延遲隊列的效果.