activemq - 在将消息的传递模式更改为非持久性后检查 ActiveMq 是否正在持久化消息
问题描述
我目前正在为我的项目使用 activemq。我注意到的问题是,由于我在 activemq 中使用的主题是持久的,因此我将日志存储在 kahadb 中。我尝试将发送到主题的消息的传递模式更改为非持久性。但是由于 kahadb 以二进制格式存储日志,因此无法测试 activemq 是否正在持久化消息。任何人都可以建议一种合适的方法来检查 activemq 消息是否已保留?
--------已编辑在获得解决方案之后-----
我使用了一个 hack 来测试 activemq 消息是否已被保留。我的主题只有一个非持久订阅者。我创建了一个持久订阅者,并在将消息传递给相关主题时使其处于非活动状态。然后我停止了activemq服务器。如果消息已被持久化,则该消息将再次被提取并出现在创建的持久订阅者的挂起队列中。这是我用来测试消息是否已保留在主题中的 hack。
解决方案
除非您有持久订阅,否则不会保留主题消息,如果您这样做了,那么您应该能够使用JMX MBean或通过Web 控制台看到它们。对于非持久消费者案例,主题本身永远不会将其消息持久化到商店。
有一个ActiveMQ CLI可以从 KahaDB 导出数据,如果您真的需要查看所有内容,它可以帮助您查看实际进入您的商店的内容:
推荐阅读
- microsoft-graph-api - 删除订阅返回 404
- java - 如何通过 Android 蓝牙串行 RFCOMM 将串行通信转储为文件
- spring-boot - 我用的sts工具
在 pom 中出现错误 - cefsharp - 处理自己创建的 Tab
- java - Firebase 如何在一个按键下检索数据
- java - 如何修复错误 json.JSONException:索引 1 超出范围 [0..1)
- java - 升级到 java 1.8 后查询未在控制台中打印。Hibernate 版本是 5,jboss 是 7
- java - In java constructor and main which one will execute first?
- sql-server - 如何在不使用 Visual Studio 中的 EF 的情况下将数据从一个表“连接”到另一个表是否可以使用现有控制器?
- reactjs - 如何在 Gauge 的 valueText 中设置不同的 valueTextColor