
需要在MQ中進行安裝插件 位址連結
插件介紹位址:https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/
作為一個新的預支付訂單被初始化放置,如果該訂單在指定時間内未進行支付,則将被認為逾時訂單進行關閉處理;電商系統中應用較多,使用者購買商品産生訂單,但未進行支付,訂單産生30分鐘内未支付将關閉訂單(且滿足該場景數量龐大),不可能采用人工幹預。
生産者
消費者(自動綁定隊列寫法)
消費者(手動綁定隊列寫法)
最終實作效果(兩個消費者)
在上述實作中,其實主要靠以下參數來幫我們實作目前功能
聲明Exchange中的 type: "x-delayed-message" 這個表明目前隊列為延時消息隊列
聲明Exchange中arguments中的 {"x-delayed-type", "topic"} 目前表明目前隊列為Topic模式
最後 我們在CreateBasicProperties的Header中設定 { "x-delay", 5000 }來達到消息延時的功能(機關為ms)
如果使用目前模式來做定時任務,在要求消息不丢失的前提下,需要運維同學提供穩定的MQ環境
如有哪裡講得不是很明白或是有錯誤,歡迎指正 如您喜歡的話不妨點個贊收藏一下吧🙂