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

在开发业务系统时,某些业务场景需要消息定时发送或延时发送(类似:飞信的短信定时发送需求),这时候就需要用到activemq的消息延时投递,详细的文档可参考官网说明,本文只介绍二种常用的用法:

注:本文采用spring的JmsTemplate来发送消息

步骤1、首先要修改activemq.xml配置文件,启用延时投递

1 <broker xmlns="http://activemq.apache.org/schema/core" ... schedulerSupport="true" >
2     ...
3   broker>

即:在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):消息延时投递_第1张图片

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

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

ActiveMQ笔记(6):消息延时投递_第2张图片

 

参考文章:
1、Delay and Schedule Message Delivery

2、喂鸡百科上的Corn表达式解释 (中文)

3、喂鸡百科上的Corn表达式解释 (英文)

4、kahaDB官方文档

 

你可能感兴趣的:(MQ)