ActiveMQ学习笔记(十)—— 延时与定时投递

ActiveMQ还支持消息的延迟投递和定时投递,这也是针对于消息生产者的。ActiveMQ为我们提供的 ScheduledMessage 类描述了延迟投递和定时投递的四种属性:

属性名数据类型描述
AMQ_SCHEDULED_DELAYlong延迟投递的时间,单位为毫秒
AMQ_SCHEDULED_PERIODlong重复投递的时间间隔,单位为毫秒
AMQ_SCHEDULED_REPEATint重复投递的次数
AMQ_SCHEDULED_CRONString使用CRON表达式设置定时投递规则

ActiveMQ默认是不支持延迟投递和定时投递的,需要我们更改activemq.xml配置文件,使其支持延迟投递和定时投递:给<broker>节点添加schedulerSuppoort属性,并将属性值置为true即可
 

<!-- 参考官网http://activemq.apache.org/delay-and-schedule-message-delivery.html -->
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" schedulerSupport="true">
	...
</broker>
//省略部分代码……

TextMessage textMessage = session.createTextMessage("这是一个消息" + System.currentTimeMillis());

//延迟投递,消息到达mq服务器后,10秒后才会发给消费者
//textMessage.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 10000);

//重复投递次数,1次,注意是int类型
//textMessage.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1); 
//重复投递间隔时间,5秒
//textMessage.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 5000); 

//cron表达式,注意:cron是操作系统的表达式,第一个参数是分钟,现在设的是指每分钟发送一次
//cron表达式的优先级高于另外三个参数,如果在设置了cron的同时,也有repeat和period参数,则会在每次cron执行的时候,重复投递repeat次,每次间隔为period,就是说设置是叠加的效果
textMessage.setStringProperty(ScheduledMessage.AMQ_SCHEDULED_CRON, "* * * * *"); 

//这些调度任务可以单独使用,也可以一起使用
//注意:不管发送多少次,发送的内容是不会改变的,别看我这里是发送的时间戳,就以为每次的内容会变化

messageProducer.send(textMessage);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值