【问题标题】:need some kind of job scheduler or delayed message queue in a java world在 Java 世界中需要某种作业调度程序或延迟消息队列
【发布时间】:2019-03-22 19:08:47
【问题描述】:
我需要在未来执行一个流程,比如说 20 分钟,基于某些事件的发生,但我可能需要根据不同的因素取消该计划的流程。或者,我可能需要在工作中重新启动计时器,这取决于另一个事件......等等。你明白了。这一切的不同排列。有谁知道满足这种需求的好技术?也许是石英(石英很烂吗?它会做所有这些事情吗?),也许是 activemq,也许是其他一些作业调度技术?
谢谢!
-罗恩
【问题讨论】:
标签:
activemq
quartz-scheduler
message-queue
scheduler
job-scheduling
【解决方案1】:
ActiveMQ 的调度器非常适合这种情况。模式可以是这样的:
- 启动一个进程(获取一些标识符)
- 向 ActiveMQ 调度程序发送消息以在 x 时间段内触发
- 消息消费者收到定时器消息,拉取标识符查看状态
- 如果过程完成.. 继续并完成
- 如果进程需要更多等待时间,发送另一个定时器消息到 ActiveMQ
一切都是异步的,所需的代码非常少。使用 ActiveMQ 的一大优势是您可以让多个消费者监听预定消息以提供高可用性。