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

MQTT搭配HiveMQ集群使用时客户端异常断开后队列配置重置仅收1000条消息

问题根因分析
  • 最核心的原因是未配置持久会话的内存队列加载上限:HiveMQ默认对离线持久化会话设置了<max-in-memory-queued-messages>参数,默认值为1000。你当前仅修改了<max-queued-messages>总队列上限为100000,但未调整该内存加载阈值:服务运行时所有消息都在内存中,所以首次发1900条、或者干净断开重连时都能收到全量消息;但服务重启时,每个持久会话仅会将前1000条消息加载到内存向客户端推送,超出部分保留在磁盘溢出队列中不会主动推送,因此只能收到1000条消息。
  • 次要因素和HiveMQ集群的会话绑定特性有关:HiveMQ集群中客户端的持久会话会默认绑定到首次接入的节点,重启服务后会话重新加载时依旧会触发1000条的内存加载限制,和重连逻辑无关。
  • 修复方案:在两个节点的<hivemq>根配置节点下新增如下持久化配置块,调整内存加载阈值和你设置的总队列上限对齐即可:
<persistence>
    <client-session>
        <max-in-memory-queued-messages>100000</max-in-memory-queued-messages>
    </client-session>
</persistence>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:54:04