首页 > 解决方案 > 在将消息的传递模式更改为非持久性后检查 ActiveMq 是否正在持久化消息

问题描述

我目前正在为我的项目使用 activemq。我注意到的问题是,由于我在 activemq 中使用的主题是持久的,因此我将日志存储在 kahadb 中。我尝试将发送到主题的消息的传递模式更改为非持久性。但是由于 kahadb 以二进制格式存储日志,因此无法测试 activemq 是否正在持久化消息。任何人都可以建议一种合适的方法来检查 activemq 消息是否已保留?

--------已编辑在获得解决方案之后-----
我使用了一个 hack 来测试 activemq 消息是否已被保留。我的主题只有一个非持久订阅者。我创建了一个持久订阅者,并在将消息传递给相关主题时使其处于非活动状态。然后我停止了activemq服务器。如果消息已被持久化,则该消息将再次被提取并出现在创建的持久订阅者的挂起队列中。这是我用来测试消息是否已保留在主题中的 hack。

标签: activemq

解决方案


除非您有持久订阅,否则不会保留主题消息,如果您这样做了,那么您应该能够使用JMX MBean或通过Web 控制台看到它们。对于非持久消费者案例,主题本身永远不会将其消息持久化到商店。

有一个ActiveMQ CLI可以从 KahaDB 导出数据,如果您真的需要查看所有内容,它可以帮助您查看实际进入您的商店的内容:


推荐阅读