1. 程式人生 > 其它 >第十一章 高階特性-RabbitMQ TTL死信佇列+延遲佇列 實戰

第十一章 高階特性-RabbitMQ TTL死信佇列+延遲佇列 實戰

第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本身是不支援延遲佇列的,怎麼辦?

      • 結合死信佇列的特性,就可以做到延遲訊息