我正在使用ActiveMQ Artemis进行数据传输,但队列中的数据不是持久的。
当我使用 artemis.cmd停止并使用 artemis.cmd run 重新启动服务器时,队列中的消息计数变为 0。
经纪人.xml :
<persistence-enabled>true</persistence-enabled>
<max-disk-usage>100</max-disk-usage>
需要考虑一些代理和客户端详细信息,以确保消息持久保存到磁盘。
- 确保使用
<persistence-enabled>true</persistence-enabled>
在代理上启用持久性。你已经这样做了,所以你在那里状态很好。 - 确保您正在使用
<queue>
"耐用"。默认情况下,这是true
的,因此不需要在队列上显式设置它,但是如果要设置它,可以使用<durable>true</durable>
. - 确保您的客户端以持久方式发送消息。不同的协议和 API 具有不同的默认值,因此这实际上取决于您使用的内容来配置消息本身的持久性。
需要明确的是,<max-disk-usage>
参数不控制消息持久性。它控制代理在开始阻止消息生产之前将使用的磁盘量。