注:本文采用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>