【问题标题】:How to manage messages in apache ActiveMQ如何在 apache ActiveMQ 中管理消息
【发布时间】:2016-06-05 12:39:34
【问题描述】:

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

【问题讨论】:

    标签: java apache activemq


    【解决方案1】:

    首先,“ActiveMQ Artemis”是 ActiveMQ 项目中的一个子项目,它代表一个全新的代理,其底层架构与主 ActiveMQ 代理完全不同。你会运行其中一个。

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

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

    【讨论】:

    • 非常感谢。在我发布了一个问题后,我继续搜索并得出了相同的结论。不过,我对阿尔忒弥斯一无所知,谢谢。所以我们要实现的解决方案是等待消息被消费,并在消费时将其视为已取消。再次感谢您的回复
    猜你喜欢
    • 2016-06-20
    • 2019-06-02
    • 2018-03-01
    • 2017-09-13
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    相关资源
    最近更新 更多