通過rabbitMq設置延遲隊列,用到15672圖形界面

1.寫個通用的baseMq

 

2.繼承這個baseMQ會要求重載processMessageBodyAsync ,然後就可以在這裏面寫自己實際的業務,比如我的爲用戶確認24小時候收貨 去平安銀行結算。

 

3.接着在spring-rabbitmq.xml裏面加個bean組件(class名爲剛剛那個mq的全路徑)。加一個監聽,一個queue。看清了,queue是task開頭的,監聽裏面的ref是上面bean組件的id

 

 

4. 在mq生產者新增一個方法,用於消費者去消費

 

MQConstants是個常量枚舉類,需要建兩個常量,名稱爲delay_exchange、delay_rk開頭。記住這2個常量名稱,後面管理後臺要用。

5.去實際用的地方喫掉這個mq(比如我的是用戶確認收貨之後執行)

@Resource
private MessageQueueProducer               messageQueueProducer;

 

 

6.自此,代碼中已經完成,還需要去rabbitmq管理後臺去設置才能正常跑。

打開mq的管理後臺,比如mq在你本地就是127.0.0.1:15672   。賬號密碼也是你設置的,如果不是你弄得,去問對應的運維或者同事

7.登錄之後 界面是這樣的,點擊Exchange

8.滑到最下面 新增前面說到MQConstants是個常量枚舉類

一共要加2個,分別是delay_exchange、task_exchange開頭的,看清了,這裏是exchange。後面要用到的

Type選direct

 

9.點擊最上面的Queue 還是滑到最下面。

先加個延遲隊列,名稱以delay_queue_開頭,  看清楚了 這裏是queue 上面的是exchange

現在說下各個參數

Message TTL爲時間,比如需要等一天就是60*60*24*1000= 86400000

Dead letter exchange  task_exchange_開頭的那個 上一步說了,爲了和死性隊列綁定

Dead letter routing key:task_rk_開頭的,和上面的區別是這個是rk 上面的是exchange

 

這兩個參數別搞錯了

 

10.新增完之後,刷新頁面,找到這個queue,點一下,檢查下參數有沒有錯

11.滑到下面 用exchange和rk綁定這個延遲隊列。

 

12.接下來去建死性隊列,和延遲隊列差不多,但是名稱通過task_queue開頭,

看清楚了,是delay開頭的 ,然後exchange和rk

 

13.建完了也點進去,用exchange和rk綁定這個延遲隊列。

看清楚了,是task開頭的 ,然後exchange和rk

 

14.至此,mq已全部完成,可以開始調試了

弄完之後記得檢查2個queue有沒有綁定exchange和rk,吧鼠標移到上面去,會變成一個小手,可以點進去的

然後檢查delay是否有綁定task,如果沒綁定的話 只能刪掉這個delay重新開始建(反正我是沒找到mq裏面有編輯的)

 

 

我先講下流程吧。

生產者生產之後,先產出Delay的這個queue,然後到了指定時間之後就去task這個queue去真正的執行自己寫的邏輯代碼,delay_queue只是一個用於延遲的。

 

 

 

15.遇到自己實在解決不了的問題 請郵箱[email protected] 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章