在将消息的传递模式更改为非持久化后,检查 ActiveMq 是否正在持久化消息

Checking if ActiveMq is persisting a message after changing the delivery mode of message to non persistent

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

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

除非您有持久订阅,否则不会持久保存主题消息,如果您这样做,那么您应该能够使用 JMX MBeans or via the web console 查看它们。对于非持久消费者案例,主题本身永远不会将其消息持久保存到商店。

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