我正在尝试实现ActiveMQ Artemis。Artemis是ActiveMQ的一部分吗?
我试图使定期任务延迟并调度消息传递ActiveMQ,但唯一有效的是延迟调度消息。文档中有关于核心API的注释:
还可以使用核心API发送预定消息,方法是在发送之前在核心消息上设置相同的属性。
所以这可能并不意味着我可以设置ActiveMQ属性。
我需要任何具有以下功能的消息队列:
- 重复任务(ActiveMQ"Classic"(
- 重复任务检测(ActiveMQ Artemis(
- 数据持久性
- 消息修改-从队列中删除或更改重复延迟
- 弹簧集成
Apache ActiveMQ Artemis是一个消息代理,是ActiveMQ项目的一部分。然而,它与";经典的";ActiveMQ代理代码库。它基于更新的、基本上无阻塞的设计,支持所有协议和与ActiveMQ 5.x相同的功能。ActiveMQ社区的当前目标是Artemis将成为ActiveMQ的6.x版本。
- 重复任务(ActiveMQ"Classic"(
您可以使用计划传递,但这仅适用于单个消息。一旦该消息被发送和消费,它就会消失,这意味着你需要发送另一条预定的消息。没有自动、重复地传递相同的消息。
石英调度器可能是一个很好的解决方案,因为您可以使用它来调度所有任务,并且调度的任务可以向分布式工作人员监视的队列发送消息。通过这种方式,您可以将日程安排与工作分配分开。
- 重复任务检测(ActiveMQ Artemis(
阿尔忒弥斯支持一种叫做";最后值队列";其中,您可以将消息的特殊属性设置为特定值(例如任务ID(,并且每当您向队列发送具有相同值的消息时,它都会用您发送的消息替换现有消息。换句话说,它总是具有您发送的最后一个值。您可以在关于最后值队列的Artemis文档中阅读更多关于这方面的信息。
还有经典的重复检测,您可以在消息上设置重复ID,如果代理看到重复的重复ID,它将丢弃具有重复ID的消息。您可以在关于重复检测的Artemis文档中阅读更多信息。
- 数据持久性
默认情况下,任何标记为durable
(或JMS术语中的persistent
(的发送到持久队列(默认情况下队列是持久的(的消息都将持久化到磁盘。
- 消息修改-从队列中删除或更改重复延迟
队列上的消息是不可变的,因此从技术上讲无法编辑它们,但您可以使用最后值队列的语义来获得类似的行为(例如,发送具有相同最后值属性的修改消息,它将替换现有消息(。
- 弹簧集成
ActiveMQ Artemis是一个JMS实现,因此Spring中可用的所有JMS集成类都可以正常工作。