第十一章 高階特性-RabbitMQ TTL死信佇列+延遲佇列 實戰
阿新 • • 發佈:2021-11-18
第1集 高階特性之-RabbitMQ死信佇列 + TTL介紹《上》
簡介:講解RabbitMQ的的死信佇列+ TTL《上》
-
什麼是TTL
-
time to live 訊息存活時間
-
如果訊息在存活時間內未被消費,則會別清除
-
RabbitMQ支援兩種ttl設定
- 單獨訊息進行配置ttl
- 整個佇列進行配置ttl(居多)
-
-
什麼是rabbitmq的死信佇列
- 沒有被及時消費的訊息存放的佇列
-
什麼是rabbitmq的死信交換機
- Dead Letter Exchange(死信交換機,縮寫:DLX)當訊息成為死信後,會被重新發送到另一個交換機,這個交換機就是DLX死信交換機。
-
訊息有哪幾種情況成為死信
- 消費者拒收訊息(basic.reject/ basic.nack),並且沒有重新入隊requeue=false
- 訊息在佇列中未被消費,且超過佇列或者訊息本身的過期時間TTL(time-to-live)
- 佇列的訊息長度達到極限
- 結果:訊息成為死信後,如果該佇列綁定了死信交換機,則訊息會被死信交換機重新路由到死信佇列
第2集 高階特性之-RabbitMQ死信佇列 + TTL介紹《下》
簡介:講解RabbitMQ的的死信佇列+ TTL《下》
-
RabbitMQ管控臺訊息TTL測試
-
佇列過期時間使用引數,對整個佇列訊息統一過期
- x-message-ttl
- 單位ms(毫秒)
-
訊息過期時間使用引數(如果佇列頭部訊息未過期,佇列中級訊息已經過期,已經還在佇列裡面)
- expiration
- 單位ms(毫秒)
-
兩者都配置的話,時間短的先觸發
-
-
RabbitMQ Web控制檯測試
- 新建死信交換機(和普通沒區別)
-
新建死信佇列 (和普通沒區別)
-
死信交換機和佇列繫結
-
新建普通佇列,設定過期時間、指定死信交換機
-
測試:直接web控制檯往product_qeueu傳送訊息即可
第3集 高階特性之-RabbitMQ 延遲佇列介紹和應用場景
簡介:講解RabbitMQ的延遲佇列和應用場景
-
什麼是延遲佇列
- 一種帶有延遲功能的訊息佇列,Producer 將訊息傳送到訊息佇列 服務端,但並不期望這條訊息立馬投遞,而是推遲到在當前時間點之後的某一個時間投遞到 Consumer 進行消費,該訊息即定時訊息
-
使用場景
- 通過訊息觸發一些定時任務,比如在某一固定時間點向用戶傳送提醒訊息
- 使用者登入之後5分鐘給使用者做分類推送、使用者多少天未登入給使用者做召回推送;
- 訊息生產和消費有時間視窗要求:比如在天貓電商交易中超時未支付關閉訂單的場景,在訂單建立時會發送一條 延時訊息。這條訊息將會在 30 分鐘以後投遞給消費者,消費者收到此訊息後需要判斷對應的訂單是否已完成支付。 如支付未完成,則關閉訂單。如已完成支付則忽略
-
Cloud微服務大課訓練營裡面的應用
- 優惠券回收
- 商品庫存回收
-
業界的一些實現方式
-
定時任務高精度輪訓
-
採用RocketMQ自帶延遲訊息功能
-
RabbitMQ本身是不支援延遲佇列的,怎麼辦?
- 結合死信佇列的特性,就可以做到延遲訊息
-