天天看点

ActiveMQ笔记(6):消息延时投递

注:本文采用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面板中,可以看到延时的消息

ActiveMQ笔记(6):消息延时投递

注:在开启消息持久化存储的前提下,就算把相应的queue在webconsole面板中删除(即删除队列),只要投递的时间尚未到,该消息也不会删除,仍然能正常延时投递。

此外,在queues面板中,如何查看某条具体的消息,也可以通过属性发现这条消息是延时消息,参考下图:

ActiveMQ笔记(6):消息延时投递

参考文章:

<a href="http://activemq.apache.org/kahadb.html" target="_blank">4、kahaDB官方文档</a>