首页 > 解决方案 > 在 Java 世界中需要某种作业调度程序或延迟消息队列

问题描述

我需要在未来执行一个流程,比如说 20 分钟,根据发生的一些事件,但我可能需要根据不同的因素取消该计划的流程。或者,我可能需要在工作中重新启动计时器,具体取决于另一个事件......等等。你明白了。这一切的不同排列。有谁知道满足这种需求的好技术?也许是石英(石英很烂吗?它会做所有这些事情吗?),也许是 activemq,也许是其他一些作业调度技术?谢谢!-罗恩

标签: activemqquartz-schedulermessage-queueschedulerjob-scheduling

解决方案


ActiveMQ 的调度器非常适合这种情况。模式可以是这样的:

  1. 启动一个进程(获取一些标识符)
  2. 向 ActiveMQ 调度程序发送消息以在 x 时间段内触发
  3. 消息消费者收到定时器消息,拉取标识符查看状态
  4. 如果过程完成..继续并完成
  5. 如果进程需要更多等待时间,则向 ActiveMQ 发送另一个计时器消息

一切都是异步的,所需的代码非常少。使用 ActiveMQ 的最大优势是您可以让多个使用者监听预定消息以提供高可用性。


推荐阅读