queue - ActiveMQ Artemis 不是持久的
问题描述
我正在使用 ActiveMQ Artemis 进行数据传递,但队列中的数据不是持久的。
当我使用 artemis.cmd stop 关闭服务器并使用 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>
参数不控制消息持久性。它控制代理在开始阻止消息生成之前将消耗的磁盘量。
推荐阅读
- c# - Angular 6 的 C# HttpPost 进度更新
- html - 跨电子邮件客户端 HTML 邮件 v:rect 按钮宽度为 100%
- python - 使用 tf.gfile.GFile 时 Python 退出
- python - Tensorflow:将张量作为一个整体进行字符串化(不创建字符串张量)
- r - 在 r 中合并数据框并报告冲突
- html5-video - html5视频标签中视频下的异常空间
- amazon-web-services - InvalidLambdaFunctionAssociationException:函数代码大小大于最大允许大小
- javascript - React-Select - How to get text value of form before OnChange occurs?
- pandas - Finding all negative values in Pandas and multiplying with -1
- cordova - iOS 13+ ionic 4 iOS app stuck at splash screen