ActiveMQ 阿尔忒弥斯

Cha*_*hap 0 scheduled-tasks activemq-artemis

我正在尝试实施 ActiveMQ Artemis。Artemis 是 ActiveMQ 的一部分吗?

我正在尝试使定期任务delay-and-schedule-message-delivery ActiveMQ,但唯一有效的是延迟计划消息。文档中有关于核心 API 的说明:

通过在发送前在核心消息上设置相同的属性,也可以使用核心 API 发送预定消息。

所以这可能并不意味着我可以设置 ActiveMQ 属性。

我需要任何具有这些功能的消息队列:

  1. 重复任务(ActiveMQ“经典”)
  2. 重复任务检测(ActiveMQ Artemis)
  3. 数据持久化
  4. 消息修改 - 从队列中移除或更改重复延迟
  5. 弹簧集成

Jus*_*ram 5

Apache ActiveMQ Artemis 是一个消息代理,它是 ActiveMQ 项目的一部分。但是,它与“经典”ActiveMQ 代理代码库是分开的。它基于更新的、基本无阻塞的设计,并且支持所有协议以及与 ActiveMQ 5.x 相同的大部分功能。ActiveMQ 社区的当前目标是 Artemis 将成为 ActiveMQ 的 6.x 版本。

  1. 重复任务(ActiveMQ“经典”)

可以使用计划传递,但这仅适用于单个消息。一旦该消息被传递和消费,它就会消失,这意味着您需要发送另一条预定的消息。没有自动、重复地传递相同的消息。

石英调度器这样的东西在这里可能是一个很好的解决方案,因为你可以用它来安排所有的任务,并且被调度的任务可以向一个队列发送消息,该队列由你的分布式工作人员监控。通过这种方式,您可以将调度与工作分配分开。

  1. 重复任务检测(ActiveMQ Artemis)

Artemis 支持称为“最后值队列”的东西,您可以在其中将消息的特殊属性设置为特定值(例如任务 ID),并且每当您将消息发送到具有相同值的队列时,它将替换现有消息与您发送的那个。换句话说,它始终具有您发送的最后一个值。您可以在有关 last-value queuesArtemis 文档中阅读有关此内容的更多信息。

还有经典的重复检测,您可以在消息上设置重复 ID,如果代理看到重复的重复 ID,它将丢弃具有重复重复 ID 的消息。您可以在关于重复检测Artemis 文档中阅读有关此内容的更多信息。

  1. 数据持久化

默认情况下,任何标记为durable(或persistent在 JMS 术语中)发送到持久队列(默认情况下队列是持久的)的消息都将持久保存到磁盘。

  1. 消息修改 - 从队列中移除或更改重复延迟

队列上的消息是不可变的,因此您无法在技术上对其进行编辑,但是您可以使用最后值队列的语义来获得类似的行为(例如,发送具有相同最后值属性的修改消息,它将替换现有的信息)。

  1. 弹簧集成

ActiveMQ Artemis 是一个 JMS 实现,因此 Spring 中可用的所有 JMS 集成类都可以正常工作。