ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery)

转自:http://blog.csdn.net/kimmking/article/details/8443872

有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。

类似这种需求,ActiveMQ提供了一种broker端消息定时调度机制。

首先要修改activemq.xml配置文件,启用延时投递。

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

然后我们只需要把几个描述消息定时调度方式的参数作为属性添加到消息,broker端的调度器就会按照我们想要的行为去处理消息。

一共有四个属性:

Property name type description
AMQ_SCHEDULED_DELAY long 延迟投递的时间
AMQ_SCHEDULED_PERIOD long 重复投递的时间间隔
AMQ_SCHEDULED_REPEAT int 重复投递次数
AMQ_SCHEDULED_CRON String Cron表达式

当然ActiveMQ也提供了一个封装的消息类型:org.apache.activemq.ScheduledMessage.

使用示例,延迟60秒:

        MessageProducer producer = session.createProducer(destination);TextMessage message = session.createTextMessage("test msg");long time = 60 * 1000;message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, time);producer.send(message);

延迟30秒,投递10次,间隔10秒:

        MessageProducer producer = session.createProducer(destination);TextMessage message = session.createTextMessage("test msg");long delay = 30 * 1000;long period = 10 * 1000;int repeat = 9;message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, period);message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, repeat);producer.send(message);

使用 CRON 表达式的例子:

        MessageProducer producer = session.createProducer(destination);TextMessage message = session.createTextMessage("test msg");message.setStringProperty(ScheduledMessage.AMQ_SCHEDULED_CRON, "0 * * * *");producer.send(message);

CRON表达式的优先级高于另外三个参数,如果在设置了CRON的同时,也有repeat和period参数,则会在每次CRON执行的时候,重复投递repeat次,每次间隔为period。就是说设置是叠加的效果。例如每小时都会发生消息被投递10次,延迟1秒开始,每次间隔1秒:

        MessageProducer producer = session.createProducer(destination);TextMessage message = session.createTextMessage("test msg");message.setStringProperty(ScheduledMessage.AMQ_SCHEDULED_CRON, "0 * * * *");message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 1000);message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 1000);message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 9);producer.send(message);

ActiveMQ—消息特性(延迟和定时消息投递)相关推荐

  1. telegram定时消息_ActiveMQ(18):Message之延迟和定时消息投递

    一.简介 延迟和定时消息投递(Delay and Schedule Message Delivery) 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消 ...

  2. ActiveMQ学习总结(8)——消息队列设计精要

    2019独角兽企业重金招聘Python工程师标准>>> 消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步R ...

  3. ActiveMQ使用及原理浅析(消息队列)

    文章目录 引言 正文 一.ActiveMQ是如何产生的? 产生背景 JMS规范 基本概念 JMS体系结构 二.如何使用? 基本功能 消息传递 P2P pub/sub 持久订阅 消息传递的可靠性 事务型 ...

  4. ActiveMQ中消费者是如何接收消息的(二)

    上篇文章大致讲述了同步消费者和异步消费者接收消息的异同(详见<ActiveMQ中消费者是如何接收消息的(一)>http://manzhizhen.iteye.com/blog/209413 ...

  5. 阿里云ONS / RocketMQ的定时消息 / 延时消息

    考虑延时和定时消息,是因为遇到了一个业务场景: 前置任务完成时发送消息,但因为一些业务原因,不希望消息马上被消费,因此需要设置延时. 文章目录 几种解决思路 实现方案 ONS延迟消息 RocketMQ ...

  6. RabbitMQ实现消息的延迟推送或延迟发送

    使用RabbitMQ实现消息的延迟消费 文章目录 前言 一.RabbitMQ是什么? 1.RabbitMQ简介 2.RabbitMQ的优点 3.常用组件 4.RabbitMQ的结构图 5.交换机的类型 ...

  7. 记录Rocketmq定时消息不消费问题的排查过程

    记录Rocketmq定时消息不消费问题的排查过程 写在前面 问题根源初步确认 问题根源再次确认. 了解rocketmq定时消息原理以及处理过程. 源码调试 结论求证 后记 写在前面 此本记录了一个项目 ...

  8. rabbitmq消费固定个数消息_SpringBoot+RabbitMQ (保证消息100%投递成功并被消费)

    作者:wangzaiplus https://www.jianshu.com/p/dca01aad6bc8 一.先扔一张图 说明:本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认机 ...

  9. rabbitmq可靠性投递_解决RabbitMQ消息丢失问题和保证消息可靠性(一)

    工作中经常用到消息中间件来解决系统间的解耦问题或者高并发消峰问题,但是消息的可靠性如何保证一直是个很大的问题,什么情况下消息就不见了?如何防止消息丢失?下面通过这篇文章,我们就聊聊RabbitMQ 消 ...

最新文章

  1. [学习笔记]电磁场与电磁波
  2. 计算机学院心理节活动,计算机学院举办“3.20”心理健康系列活动——心理健康周,公寓心理文化节...
  3. Nginx域名访问与访问控制
  4. Python select解析
  5. echo和@echo_如何在Echo Show和Echo Spot上切换到24小时时钟
  6. 备份的sql文件乱码无法导入
  7. 【Programming Clip】点分十进制IP和长整型转换
  8. Docker-Docker-file构建Redis5.0.3镜像
  9. java io装饰类,Java IO 装饰类新说
  10. Mac翻译软件Mate Translate
  11. oracle 14097,ORA-14097: ALTER TABLE EXCHANGE PARTITION 中的列类型或大小不匹配
  12. Android 安卓益智休闲源码
  13. Win7下Hyenae的安装
  14. shc/unshc工具用于加/解密shell脚本
  15. 微信收货地址开发分享
  16. linux桥接模式配置
  17. bi java lajp 和php_新宠混血儿诞生记--Java+PHP整合
  18. documents4j 实现Word文档、xlsx、等格式转换PDF文件
  19. 实验室NEWIFI-D1路由小云系统简易配置参考
  20. 玩 High API 系列好文(一):智能客服、钉钉Ding功能、智能云相册、快速实现身份验证

热门文章

  1. Redis 笔记(14)— 持久化及数据恢复(数据持久方式 RDB 和 AOF、数据恢复、混合持久化)
  2. Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值
  3. pykafka连接重要使用pykafka,kafka-python的api开发kafka生产者和消费者
  4. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态
  5. 三段式LLVM编译器
  6. 超轻量AI引擎MindSpore Lite
  7. 回归算法分类,常用回归算法解析
  8. KITTI数据集上MaskRCNN检测效果示例
  9. H.265视频编码与技术全析(下)
  10. 噪声标签的负训练:ICCV2019论文解析