ActiveMQ 阿尔忒弥斯
ActiveMQ Artemis
我正在尝试实施 ActiveMQ Artemis。 Artemis 是 ActiveMQ 的一部分吗?
我正在尝试制作周期性任务delay-and-schedule-message-delivery ActiveMQ, but the only thing which is working is delayed scheduled-messages。文档中有关于核心API的说明:
Scheduled messages can also be sent using the core API, by setting the same property on the core message before sending.
所以这可能并不意味着我可以设置 ActiveMQ 属性。
我需要任何具有这些功能的消息队列:
- 重复任务(ActiveMQ“经典”)
- 重复任务检测(ActiveMQ Artemis)
- 数据持久化
- 消息修改 - 从队列中删除或更改重复延迟
- Spring 整合
Apache ActiveMQ Artemis 是一个消息代理,它是 ActiveMQ 项目的一部分。但是,它与“经典”ActiveMQ 代理代码库是分开的。它基于更新的、基本无阻塞的设计,它支持所有协议和与 ActiveMQ 5.x 相同的大部分功能。 ActiveMQ 社区当前的目标是让 Artemis 成为 6.x 版本的 ActiveMQ。
- Repeating tasks (ActiveMQ "Classic")
您可以使用定时发送,但这仅适用于单封邮件。一旦该消息被传递和消费,它就消失了,这意味着您需要发送另一条预定的消息。没有自动重复发送相同的消息。
quartz scheduler 之类的东西在这里可能是一个很好的解决方案,因为您可以用它来安排所有任务,并且计划的任务可以将消息发送到由分布式工作人员监视的队列。通过这种方式,您可以将调度与工作分配分开。
- Duplicate task detection (ActiveMQ Artemis)
Artemis 支持一种称为“最后值队列”的东西,您可以在其中将消息的特殊 属性 设置为特定值(例如任务 ID),并且每当您将消息发送到队列时相同的值,它将 替换 现有消息为您发送的消息。换句话说,它始终具有您发送的 last 值。您可以在 Artemis documentation on last-value queues.
中阅读更多相关信息
还有经典的重复检测,您可以在其中为消息设置重复 ID,如果代理看到重复的重复 ID,它将丢弃具有重复重复 ID 的消息。您可以在 Artemis documentation on duplicated detection.
中阅读更多相关信息
- Data persistence
默认情况下,任何标记为 durable
(或 JMS 术语中的 persistent
)的发送到持久队列(默认情况下队列是持久的)的消息都将持久保存到磁盘。
- Message modification - remove from the queue or change repeating delay
队列中的消息是不可变的,因此您无法从技术上编辑它们,但您可以使用最后值队列的语义来获得类似的行为(例如,发送具有相同最后值的修改消息 属性,它将替换现有的消息)。
- Spring integration
ActiveMQ Artemis 是一个 JMS 实现,因此 Spring 中可用的所有 JMS 集成 类 都可以正常工作。
我正在尝试实施 ActiveMQ Artemis。 Artemis 是 ActiveMQ 的一部分吗?
我正在尝试制作周期性任务delay-and-schedule-message-delivery ActiveMQ, but the only thing which is working is delayed scheduled-messages。文档中有关于核心API的说明:
Scheduled messages can also be sent using the core API, by setting the same property on the core message before sending.
所以这可能并不意味着我可以设置 ActiveMQ 属性。
我需要任何具有这些功能的消息队列:
- 重复任务(ActiveMQ“经典”)
- 重复任务检测(ActiveMQ Artemis)
- 数据持久化
- 消息修改 - 从队列中删除或更改重复延迟
- Spring 整合
Apache ActiveMQ Artemis 是一个消息代理,它是 ActiveMQ 项目的一部分。但是,它与“经典”ActiveMQ 代理代码库是分开的。它基于更新的、基本无阻塞的设计,它支持所有协议和与 ActiveMQ 5.x 相同的大部分功能。 ActiveMQ 社区当前的目标是让 Artemis 成为 6.x 版本的 ActiveMQ。
- Repeating tasks (ActiveMQ "Classic")
您可以使用定时发送,但这仅适用于单封邮件。一旦该消息被传递和消费,它就消失了,这意味着您需要发送另一条预定的消息。没有自动重复发送相同的消息。
quartz scheduler 之类的东西在这里可能是一个很好的解决方案,因为您可以用它来安排所有任务,并且计划的任务可以将消息发送到由分布式工作人员监视的队列。通过这种方式,您可以将调度与工作分配分开。
- Duplicate task detection (ActiveMQ Artemis)
Artemis 支持一种称为“最后值队列”的东西,您可以在其中将消息的特殊 属性 设置为特定值(例如任务 ID),并且每当您将消息发送到队列时相同的值,它将 替换 现有消息为您发送的消息。换句话说,它始终具有您发送的 last 值。您可以在 Artemis documentation on last-value queues.
中阅读更多相关信息还有经典的重复检测,您可以在其中为消息设置重复 ID,如果代理看到重复的重复 ID,它将丢弃具有重复重复 ID 的消息。您可以在 Artemis documentation on duplicated detection.
中阅读更多相关信息
- Data persistence
默认情况下,任何标记为 durable
(或 JMS 术语中的 persistent
)的发送到持久队列(默认情况下队列是持久的)的消息都将持久保存到磁盘。
- Message modification - remove from the queue or change repeating delay
队列中的消息是不可变的,因此您无法从技术上编辑它们,但您可以使用最后值队列的语义来获得类似的行为(例如,发送具有相同最后值的修改消息 属性,它将替换现有的消息)。
- Spring integration
ActiveMQ Artemis 是一个 JMS 实现,因此 Spring 中可用的所有 JMS 集成 类 都可以正常工作。