如何在apache ActiveMQ中管理消息

问题描述 投票:0回答:1

我将 Apache ActiveMQ 嵌入到我的 java 8 服务器端项目中。它工作正常,我可以从预先配置的队列发送和使用消息。我现在需要能够根据请求以编程方式从队列中删除消息。在阅读了一些文档后,我发现 Apache ActiveMQ 有一个名为 Artemis 的子项目,它似乎提供了所需的功能。但我对如何做有点困惑。 Artemis 是 ActiveMQ 之上的插件吗?我只需要添加所需的依赖项并使用这些工具,或者它是一个单独的产品,它不能与 Active MQ 一起使用,而是作为一个独立的产品。如果是这样,我如何管理 Active MQ 中的单个消息(特别是删除请求的消息)?

java activemq
1个回答
1
投票

首先,“ActiveMQ Artemis”是 ActiveMQ 项目中的一个子项目,它代表一个全新的代理,其底层架构与主 ActiveMQ 代理完全不同。您可以选择其中之一。

要管理 ActiveMQ 代理中的消息,您可以使用 JMX Mamagement API 及其公开的 Queue#remove 方法来删除特定消息。这可以使用消息 ID 来完成,或者更广泛地使用消息选择器来捕获多个消息(如果需要)。 JMX API 也通过 Jolokia 公开,以便您可以通过简单的 REST 调用而不是 JMX 方式(如果您愿意)来管理代理。

无论如何,代理上的这种消息级别管理在消息传递世界中有点反模式。如果您发现自己需要将代理视为数据库,那么您应该问自己为什么不使用数据库,因为代理不是数据库。通常,与仅仅将消息放入数据库相比,尝试以这种方式管理消息会遇到更多问题。

© www.soinside.com 2019 - 2024. All rights reserved.