我正在尝试实现ActiveMQ Artemis。Artemis是ActiveMQ的一部分吗?
我正在努力使定期任务延迟和进度-消息传递ActiveMQ,但唯一的工作是延迟排定-讯息。文档中有关于核心API的说明:
还可以使用核心API发送调度消息,方法是在发送之前在核心消息上设置相同的属性。
因此,这可能并不意味着我可以设置ActiveMQ属性。
我需要具有以下功能的任何消息队列:
发布于 2018-12-04 16:15:06
是一个消息代理,它是ActiveMQ项目的一部分。然而,它与“经典”ActiveMQ broker代码库是分开的。它基于一个更新的、基本上是非阻塞的设计,它支持所有的协议以及与ActiveMQ 5.x相同的许多功能。ActiveMQ社区当前的目标是,Artemis将成为ActiveMQ的6.x版本。
您可以使用计划传递,但这只适用于单个消息。一旦该消息被传递和使用,它就消失了,这意味着您需要发送另一条预定的消息。没有自动、重复地传递相同的消息。
在这里,像石英调度器这样的东西可能是一个很好的解决方案,因为您可以用它来调度所有的任务,并且计划的任务可以向由分布式工作人员监视的队列发送一条消息。通过这种方式,您可以将调度与工作分发分离开来。
Artemis支持被称为“最后值队列”的东西,您可以将消息上的特殊属性设置为特定值(例如,任务ID),并且每当您用相同的值向队列发送消息时,它将用您发送的消息替换现有的消息。换句话说,它总是有您发送的最后一个值。您可以在关于最后值队列的Artemis文档中阅读更多有关这方面的内容。
还有典型的重复检测,您可以在消息上设置一个重复ID,如果代理看到重复的ID,它将使用重复的ID丢弃该消息。您可以在关于重复检测的Artemis文档中更多地了解这一点。
默认情况下,任何被发送到持久队列(默认情况下队列是持久的)的标记为durable (或persistent )的消息都将被持久化到磁盘。
队列上的消息是不可变的,因此您不能从技术上编辑它们,但是您可以使用最后值队列的语义来获得类似的行为(例如,发送具有相同最后值属性的修改消息,它将替换现有消息)。
ActiveMQ是一个just实现,所以在Spring中可用的所有implementation类都能正常工作。
https://stackoverflow.com/questions/53603303
复制相似问题