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]