ActiveMQ from version 5.4 has an optional persistent scheduler built into the ActiveMQ message broker. It is enabled by setting the broker schedulerSupport attribute to true in the xml configuration
An ActiveMQ client can take advantage of a delayed delivery by using the following message properties:

Property name

type

description

AMQ_SCHEDULED_DELAY

long

The time in milliseconds that a message will wait before being scheduled to be delivered by the broker

AMQ_SCHEDULED_PERIOD

long

The time in milliseconds to wait after the start time to wait before scheduling the message again

AMQ_SCHEDULED_REPEAT

int

The number of times to repeat scheduling a message for delivery

AMQ_SCHEDULED_CRON

String

Use a Cron entry to set the schedule

For example, to have a message scheduled for delivery in 60 seconds - you would need to set the AMQ_SCHEDULED_DELAY property:

IMessageProducer producer = session.CreateProducer(destination);
ITextMessage message = session.CreateTextMessage("test msg");
long time = * ;
message.Properties["AMQ_SCHEDULED_DELAY"] = time;
producer.Send(message);

You can set a message to wait with an initial delay, and the repeat delivery 10 times, waiting 10 seconds between each re-delivery:

IMessageProducer producer = session.CreateProducer(destination);
ITextMessage message = session.CreateTextMessage("test msg");
long delay = * ;
long period = * ;
int repeat = ;
message.Properties["AMQ_SCHEDULED_DELAY"] = delay;
message.Properties["AMQ_SCHEDULED_PERIOD"] = period;
message.Properties["AMQ_SCHEDULED_REPEAT"] = repeat;
producer.Send(message);

You can also use CRON to schedule a message, for example, if you want a message scheduled to be delivered every hour, you would need to set the CRON entry to be - 0 * * * * - e.g.

IMessageProducer producer = session.CreateProducer(destination);
ITextMessage message = session.CreateTextMessage("test msg");
message.Properties["AMQ_SCHEDULED_CRON"] = "0 * * * *";
producer.Send(message);

CRON scheduling takes priority over using message delay - however, if a repeat and period is set with a CRON entry, the ActiveMQ scheduler will schedule delivery of the message for every time the CRON entry fires. Easier to explain with an example. Supposing that you want a message to be delivered 10 times, with a one second delay between each message - and you wanted this to happen every hour - you'd do this:

IMessageProducer producer = session.CreateProducer(destination);
ITextMessage message = session.CreateTextMessage("test msg");
message.Properties["AMQ_SCHEDULED_CRON"] = "0 * * * *";
message.Properties["AMQ_SCHEDULED_DELAY"] = 1000;
message.Properties["AMQ_SCHEDULED_PERIOD"] = 1000;
message.Properties["AMQ_SCHEDULED_REPEAT"] = 9;
producer.Send(message);
 
摘抄自:http://activemq.apache.org/nms/stomp-delayed-and-scheduled-message-feature.html

最新文章

  1. Javascript本质第二篇:执行上下文
  2. <<< java如何调用系统程序
  3. EventBus使用介绍
  4. IL指令大全
  5. css+div 布局遇到的小常识
  6. differ比较两个字符串的差异
  7. 联想企业网盘:SaaS服务集群化持续交付实践
  8. 细说 ASP.NET Cache 及其高级用法【转】
  9. k60模块
  10. ssh整合之七注解结合xml形式
  11. Ubuntu18.04 安装jdk1.8
  12. 介绍Kubernetes监控Heapster
  13. Android Metro风格的Launcher开发系列第三篇
  14. 【模板】ac自动机
  15. dp入门(LIS,LCS)
  16. Windows Phone本地数据库(SQLCE):3、[table]attribute(翻译) (转)
  17. RxJava【过滤】操作符 filter distinct throttle take skip first MD
  18. repo_file_in_folder
  19. mate桌面xrdp无法登陆问题
  20. 使用gulp 合并压缩打包,实时监控文件,实现本地server

热门文章

  1. Python实现MQTT接收订阅数据
  2. Asp.Net六大内置对象
  3. IEDA创建Springboot项目
  4. ulimit 更改 gcc升级 查看显卡状态命令
  5. 跳表和ConcurrentSkipListMap解析
  6. 201871010107-公海瑜《面向对象程序设计(java)》第十一周学习总结
  7. nginx发布静态资源
  8. 安卓Jsoup爬虫
  9. VNC远程登陆树莓派3(包括开机启动)
  10. 【oracle】update select语句