`
superheizai
  • 浏览: 64421 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

activeMQ中消息的定时发送

    博客分类:
  • JMS
阅读更多
activeMQ在5.4以后的版本中引入了定是持久化功能。用户可以通过定义下面这些的消息属性来实现定时功能:
  • AMQ_SCHEDULED_DELAY long 发送延迟
  • AMQ_SCHEDULED_PERIOD long 发送间隔
  • AMQ_SCHEDULED_REPEAT int 发送次数
  • AMQ_SCHEDULED_CRON String 发送频率

同时,activeMQ为了方便用户的使用,提供了org.apache.activemq.ScheduledMessage.接口来包装了这些属性,下面就来看看这些属性的具体使用。
1.延迟60s发送
        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);

2.在经过30s的延迟后,每隔10s发送一次,一共发送10次
        MessageProducer producer = session.createProducer(destination);
        TextMessage message = session.createTextMessage("test msg");
        long delay = 30 * 1000;
        long period = 10 * 1000;
        int repeat = 10;
        message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);
        message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, period);
        message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, repeat);
        producer.send(message);

3.定义每小时发送一次,可以利用CRON值来设定:
 MessageProducer producer = session.createProducer(destination);
        TextMessage message = session.createTextMessage("test msg");
        message.setStringProperty(ScheduledMessage.AMQ_SCHEDULED_CRON, "0 * * *   *");
        producer.send(message);

这里对CRON简单介绍下:
Entry      Description                     Equivalent To
@yearly       Run once a year           0 0 1 1 *
@annually     (same as @yearly)           0 0 1 1 *
@monthly      Run once a month           0 0 1 * *
@weekly       Run once a week           0 0 * * 0
@daily       Run once a day           0 0 * * *
@midnight     (same as @daily)           0 0 * * *
@hourly      Run once an hour           0 * * * *



CRON的优先级是高于发送延迟属性的。如果定义了发送次数和发送间隔的两个属性的话,那么定时器就会在CRON触发消息发送的时候,按照发送次数和发送间隔属性的配置来执行。以一个例子来解释上述声明。假设一个消息要被发送10次,每次间隔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消息发送接收封装实现及定时测试.

    实现了ActiveMQ的初步封装,比较适合新手入门学习,简单明了

    Sping整合ActiveMq案例.zip

    Sping整合ActiveMq案例,利用Maven的坐标技术整合Sping技术实现消息生产者发送消息通过消息中间件,然后消息消费者消费消息

    ActiveMQ.rar

    包括:消息属性、 Advisory Message、延迟和定时消息投递、Blob消息、消息 转换等 n 十二: Consumer高级特性 包括:独有消费者、消息异步分发、消息优先级、管理持久化消息、消息分组、 消息选择器、消息重递策略、...

    ActiveMQ——Java连接ActiveMQ

    发布/订阅消息传递域的特点如下:(1)生产者将消息发布到topic中,每个消息可以有多个消费者,属于1:N关系(2)生产者和消费者之间有时间上的相关性,订阅某一个主题的消费者只能消费自它订阅之后发布的消息(3)...

    ActiveMQ——Java连接ActiveMQ(点对点)

    发送者发送后不见得接收者会立即收看(3)消息被消费后队列中不会再存储,所以消费者不会消费到已经被消费掉的消息创建Maven工程关于怎么创建Maven工程这里就不详细讲解了,不会的朋友网上找一下添加相关依赖消息...

    深入解析RocketMQ

    Producer 如何感知要发送消息的broker 即brokerAddrTable 中的值是怎么获得的, 1. 发送消息的时候指定会指定topic,如果producer 集合中没有会根据指定topic 到namesrv 获取 topic 发布信息TopicPublishInfo,并放...

    邮件发送 poi 二维码 条形码等java常用的工具类

    MailUtil:邮件工具类,包括发送纯文本邮件,带(1个/多个)附件的邮件, 群发邮件 NumberUtil:数字操作工具 包括精准数字运算,数据格式化 PageUtil:分页工具类, POIUtil:poi工具类,excel导出 QrCodeUtil...

    基于SSM+mysql的分布式电商项目源码+数据库+项目说明(课程设计).zip

    5.ActiveMQ:使用Activemq发送接收消息,通过消息队列实现商品同步。 6.FreeMarker:FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道...

    stomp.py:“ stomp.py”是一个Python客户端库,用于使用STOMP协议(版本1.0、1.1和1.2)访问消息传递服务器(例如ActiveMQ或RabbitMQ)。 它也可以作为独立的命令行客户端运行以进行测试

    您可以连接到在本地计算机上运行的消息代理,并使用以下示例发送消息。 import stomp conn = stomp . Connection () conn . connect ( 'admin' , 'password' , wait = True ) conn . send ( body = ' ' . join ( ...

    java实用工具实例

    包含activeMq,email发送,excel导出,接口方法,quartz定时任务,redis工具类,socket等技术的应用实例,以及接口和多线程的知识总结,适合学习和面试。

    springCloud

    管理和传播所有分布式项目中的消息,本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和RabbitMQ 。 下面是一个配置中心刷新配置的例子 1、提交代码触发post请求给bus/refresh 2、server端...

    spring boot 实践学习案例,与其它组件整合

    - Spring Boot 业务应用,包括 定时任务、上传文件、发送邮件、Doc文档操作 等。 - springboot-ajax - Spring Boot AJAX 跨域,包括 JSONP、Node.js与SpringBoot集成使用反向代理 等。 - springboot-...

    springboot常用框架

    springboot用法和与各种框架、组件等结合使用 ,包括springboot的注解分析、路径分析、取得内置对象、...整合RabbitMQ、整合kafka、邮件发送、定时调度、Actuator监控、 整合Redis数据库、整合Restfui框架、整合Shiro

    【JeeSpringCloud v3.2.4】后台权限管理系统+互联网云快速开发框架+微服务分布式代码生成.zip

    ActiveMQ队列:提供ActiveMQ队列,处理批量发送大数据量邮件、大数据量日志文件。 工作流:功能包括在线办公、我的任务、审批测试、流程管理、模型管理。 CMS:功能包括内容管理、内容管理、统计分析、栏目设置、首页...

    【JeeSpringCloud v3.2.4】后台权限管理系统+互联网云快速开发框架+微服务分布式代码生成

    ActiveMQ队列:提供ActiveMQ队列,处理批量发送大数据量邮件、大数据量日志文件。 工作流:功能包括在线办公、我的任务、审批测试、流程管理、模型管理。 CMS:功能包括内容管理、内容管理、统计分析、栏目设置、首页...

    Group_chat_stomp:使用脚踩协议进行群聊,发布订阅一对多协议

    Group_chat_stomp 使用stomp协议进行群组聊天,发布/订阅一对多模式这是梅西大学159339 Internet编程作业。 该项目的目的是编写一个与ActiveMQ...列表中的任何主题,整个程序就像聊天室一样,消息将立即发送和接收。 。

    JAVA上百实例源码以及开源项目

    发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器  Tcp服务端与客户端的JAVA实例源代码,一个简单...

    JAVA上百实例源码以及开源项目源代码

    同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话…… 还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本...

Global site tag (gtag.js) - Google Analytics