首页 > 解决方案 > ActiveMQ Artemis 不是持久的

问题描述

我正在使用 ActiveMQ Artemis 进行数据传递,但队列中的数据不是持久的。

当我使用 artemis.cmd stop 关闭服务器并使用 artemis.cmd run 重新启动时,队列中的消息计数变为 0。

经纪人.xml:

<persistence-enabled>true</persistence-enabled>
<max-disk-usage>100</max-disk-usage>

标签: queuejmsactivemq-artemis

解决方案


需要考虑一些代理和客户端详细信息,以确保消息持久保存到磁盘。

  1. 确保使用<persistence-enabled>true</persistence-enabled>. 你已经这样做了,所以你的状态很好。
  2. 确保<queue>您正在使用的设备是“耐用的”。这是true默认设置,因此不需要在队列上显式设置,但如果您想设置它,您可以使用<durable>true</durable>.
  3. 确保您的客户端以持久的方式发送消息。不同的协议和 API 具有不同的默认值,因此它实际上取决于您使用的内容以及如何配置消息本身的持久性。

需要明确的是,该<max-disk-usage>参数不控制消息持久性。它控制代理在开始阻止消息生成之前将消耗的磁盘量。


推荐阅读