使用 KahaDB 时如何持久化 Activemq 队列/主题中的消息?

Posted

技术标签:

【中文标题】使用 KahaDB 时如何持久化 Activemq 队列/主题中的消息?【英文标题】:How can messages in Activemq queue/topics be persisted while using KahaDB? 【发布时间】:2012-05-22 07:54:56 【问题描述】:

更具体地说,现在当 activemq 重新启动时,队列和主题的入队/出队消息计数变回 0,但我希望 activemq 使用 KahaDB 持久化消息,这样即使在 activemq 重新启动后,计数器也不会切换返回 0 但显示累积计数。任何指针都会有帮助。

我正在使用 activemq 版本 - 5.4.3 和所有默认设置。 提前谢谢你。

【问题讨论】:

【参考方案1】:

如果您配置了 KahaDB 并且正在发送启用了持久属性(默认)的消息,那么它们将为所有具有持久订阅者的队列或主题进行存储和重新加载。

【讨论】:

感谢您的建议。我在 activemq.xml 中配置了 kahaDB,如下所示: activemq.apache.org/schema/core" brokerName="localhost" persistent="true" dataDirectory="$activemq.base/data" destroyApplicationContextOnStop="true"> 消息现在在 aq 启动后被持久化,如 Number of Pending msgs counter 但是 #msgs de/enqueued go回到0。这是对的吗?即使在 aq 启动之后,是否可以看到 de/enqueued msgs 的累积计数?谢谢! 这些是运行时统计信息,因此不会持久化。您应该会在重新启动时看到队列的深度,但统计信息将被重置并随着队列的使用而增长。

以上是关于使用 KahaDB 时如何持久化 Activemq 队列/主题中的消息?的主要内容,如果未能解决你的问题,请参考以下文章

ActiveMQ消息持久化-LevelDB

哪个套件 KahaDB 或现有的用于 activeMQ 的 JDBC?

activemq的高级特性:消息存储持久化

ActiveMQ 消息存储持久化

如何避免activeMQ数据丢失

ActiveMQ 填坑记