RabbitMQ 延遲佇列

2022-06-29 02:27:17 字數 1393 閱讀 2708

rabbitmq實現延遲佇列一:在佇列上設定ttl

publish --> delaysync.exchange --> delay.5m.queue(延遲佇列) --> delay.exchange --> test.queue(正常佇列) --> consumer

//

延遲佇列start

mapmap = new hashmap();

map.put("x-message-ttl", 10000);//

訊息過期時間

map.put("x-max-length", 500000);//

最大積壓的訊息個數

map.put("x-dead-letter-exchange", "delay.exchange");//

訊息過期後會投遞到delay.exchange

channel.queuedeclare("delay.5m.queue", true, false, false, map);

rabbitmq實現延遲佇列二:在訊息上設定ttl

publish --> default exchange --> delay_queue(延遲佇列) --> amq.direct --> message_ttl_queue(正常佇列) --> consumer

佇列:

//

延遲佇列

maparguments = new hashmap();

arguments.put("x-dead-letter-exchange", "amq.direct");//

訊息過期後會投遞到amq.direct

arguments.put("x-dead-letter-routing-key", "message_ttl_routingkey");//

出現dead letter之後將重新按照指定的routing-key傳送

channel.queuedeclare("delay_queue", true, false, false, arguments);

訊息傳送:

//

設定延遲屬性

amqp.basicproperties.builder builder = new

amqp.basicproperties.builder();

//deliverymode:將訊息標記為持久(值為2)或瞬態(任何其他值)

amqp.basicproperties properties = builder.expiration("10000").deliverymode(2).build();

channel.basicpublish("", "delay_queue", properties, msg.getbytes());

Rabbitmq延遲佇列

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

rabbitmq 延遲佇列

延時佇列 佇列內部是有序的,最重要的特性就體現在它的延時屬性上,延時佇列中的元素是希望 在指定時間到了以後或之前取出和處理,簡單來說,延時佇列就是用來存放需要在指定時間被處理的 元素的佇列。延遲佇列使用場景 1.訂單在十分鐘之內未支付則自動取消 2.新建立的店鋪,如果在十天內都沒有上傳過商品,則自動...

rabbitmq實現延遲佇列

延遲佇列應用場景 使用者生成訂單之後,需要過一段時間校驗訂單的支付狀態,如果訂單仍未支付則需要及時地關閉訂單。使用者註冊成功之後,需要過一段時間比如一周後校驗使用者的使用情況,如果發現使用者活躍度較低,則傳送郵件或者簡訊來提醒使用者使用。延遲重試。比如消費者從佇列裡消費訊息時失敗了,但是想要延遲一段...