SpringBoot下RabbitMq實現定時任務

2021-09-24 11:44:33 字數 1883 閱讀 5811

定時任務場景:訂單下單15分鐘未付款自動關閉

延遲任務實現原理圖如下:

根據上圖看出我們需要兩個佇列(一是死信佇列,訊息在裡面度過tll時間,二是處理佇列,訊息度過tll時間後進入該佇列),兩個交換機和路由(一是用來將訊息送入死信佇列,二是將訊息從死信佇列送到處理佇列),但是交換機其實可以用同乙個,也就是乙個交換機搭配兩個路由的方式。

以下為**實現過程:

//首先rabbitadmin的配置

@bean

public rabbitadmin rabbitadmin

(cachingconnectionfactory cachingconnectionfactory)

然後是佇列交換機以及繫結的宣告(queue,exchange,binding)

@autowired

rabbitadmin rabbitadmin;

/** * 建立延遲佇列,該佇列內容不會唄監聽,tll到期自動**

* @param queuename

* @param delayexchange

*/public

void

createdelayqueue

(string queuename,string delayexchange,string delayroutingkey)

/** * 建立普通佇列

* @param queuename

*/public

void

createqueue

(string queuename)

/** * 建立延遲佇列得交換機,就是乙個普通得交換機

* @param name

*/public

void

createexchange

(string name)

/** * 繫結佇列

* @param queuename

* @param delayexchange

* @param routekey

*/public

void

bindqueue

(string queuename,string delayexchange,string routekey)

/** * 傳送訊息

* @param message

* @param exchange

* @param routekey

* @param tll 時間 單位毫秒

*/public

void

sendmessagewithtll

(string message,string exchange,string routekey,string tll)})

;}@override

public

void

sendmessage

(string message, string exchange, string routekey)})

;}

進行測試

/**

* 監聽訊息

* @param message

* @return

*/@rabbitlistener

(queues =

"consumerqueue"

)public

void

getmessage

(string message)

CentOS下安裝Erlang和RabbitMQ

首先使epel 生效 rpm uvh wget o etc yum.repos.d epel erlang.repo 安裝包 otp src r14b.tar.gz ok 了現在開始用 yum 安裝 erlang 和 rabbitmq吧 yum install erlang rabbitmq ser...

CentOS7下原始碼包方式安裝rabbitmq

1.先安裝erlang wget 3.安裝rabbitmqrpm import rpm ivh rabbitmq server 3.5.0 1.noarch.rpm 4.啟動rabbitmq服務service rabbitmq server restart檢視狀態 rabbitmqctl statu...

用monit監控mongodb和rabbitmq

什麼是monit monit是乙個跨平台的用來監控unix linux系統 比如linux bsd osx solaris 的工具。monit特別易於安裝,而且非常輕量級 只有500kb大小 並且不依賴任何第三方程式 外掛程式或者庫。安裝 yum install monit 如何配置 使用yum安裝...