我正在将基于 ActiveMQ Classic 的项目转换为 ActiveMQ Artemis 2.19。 (由于该项目依赖于 Java 8,因此优先选择 Artemis 的目标版本。)
在 ActiveMQ Classic 中,我利用了对延迟消息和基于 cron 的消息的调度程序支持。然而,在适应 ActiveMQ Artemis 的过程中,我注意到调度程序支持似乎仅限于延迟消息。
ActiveMQ Artemis 是否缺乏基于 cron 的调度程序支持?
您能否建议一种替代方案或最佳实践来替换 ActiveMQ Artemis 中的此功能,或者手动处理是唯一可行的选择?
ActiveMQ Artemis 并不意味着完全重新实现 ActiveMQ Classic 代码库并支持所有现有功能。 Artemis 是一个全新的实现,支持相同的协议(即 OpenWire、AMQP、MQTT、STOMP)和许多相同的功能(或等效功能)。
正如您所注意到的,您可以使用计划传送,但这仅适用于单条消息。一旦该消息被传递并使用,它就会消失,这意味着您需要发送另一条预定的消息。不会自动重复传递相同的消息。
像 quartz 调度程序这样的东西可能是一个很好的解决方案,因为您可以用它来安排所有任务,并且计划的任务可以向由分布式工作人员监控的队列发送消息。通过这种方式,您可以将日程安排与工作分配分开。
目前,在 Artemis 代理中实现高级作业调度功能对我来说没有多大意义。 “正确”地做到这一点(例如支持日志或数据库持久性)将是相当大的工作量,并且像 Quartz 这样的东西使应用程序可以很容易地实现自己。也就是说,内存调度程序可能不需要做很多工作。如果您对此感兴趣,请随时发送拉取请求。我们始终欢迎贡献!