You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ActiveMQ broker重启后持久化留存retained消息?

ActiveMQ MQTT 保留消息重启丢失问题解答

1. 现象是否为预期行为

默认配置下属于预期行为。ActiveMQ 5.15.x版本对MQTT协议的保留消息(retained message)默认仅存储在Broker内存中,不会写入KahaDB持久化存储,因此Broker重启后保留消息会被清空。

2. 实现重启后保留消息持久化的操作方案

你已完成conf/、data/目录的本地挂载,仅需按以下步骤修改配置即可:

步骤1:修改MQTT传输连接器配置

编辑本地挂载的conf/activemq.xml文件,找到<transportConnectors>节点下的MQTT连接器配置,新增persistentRetained="true"参数:

<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;persistentRetained=true"/>

如果原有配置中没有MQTT连接器,直接将上述代码添加到<transportConnectors>节点内部即可。

步骤2:确认发布端参数符合要求

你当前使用的QoS 1、retained message = true的发布参数已经满足要求:MQTT QoS ≥1的消息在ActiveMQ中默认会标记为持久化属性,可正常写入KahaDB。

步骤3:重启容器生效

保存配置后重启ActiveMQ容器,后续新发布的保留消息就会持久化到KahaDB中,Broker重启后不会丢失,晚订阅的客户端可正常获取到最新的保留消息。

注意事项

  • 该配置仅对修改后新发布的保留消息生效,修改配置前已发布的保留消息仅存储在内存中,重启后仍会丢失,需重新发布一次才能完成持久化。
  • 请确认本地挂载的data/目录权限配置正确,容器运行进程拥有该目录的读写权限,避免KahaDB持久化失败。

内容的提问来源于stack exchange,提问作者ThatChrisGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:06:07