注:本文采用spring的JmsTemplate來發送消息
步驟1、首先要修改activemq.xml配置檔案,啟用延時投遞
即:在broker節點加上schedulerSupport="true",然後重新開機activemq即可
步驟2、定義一個MessagePostProcessor的實作類
步驟3、jmsTemplate發送示例
上面的代碼示範了二種延時的用法:延時N毫秒、按corn表達式延時(注:此corn表達式并非Quartz架構中的corn表達式,而是linux中corntab中的表達 式,基本順序是"分(0-59) 時(0-23) 日(1-31) 月(1-12) 星期幾(1-7) ")
發送成功後,可以登入activemq的webconsole檢視消息的屬性:
在scheduled面闆中,可以看到延時的消息

注:在開啟消息持久化存儲的前提下,就算把相應的queue在webconsole面闆中删除(即删除隊列),隻要投遞的時間尚未到,該消息也不會删除,仍然能正常延時投遞。
此外,在queues面闆中,如何檢視某條具體的消息,也可以通過屬性發現這條消息是延時消息,參考下圖:
參考文章:
<a href="http://activemq.apache.org/kahadb.html" target="_blank">4、kahaDB官方文檔</a>