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

Mosquitto 2.0.x:SIGHUP后持久化客户端订阅信息未生效问题

Bug处理记录

2023年10月20日经调查已修复该Bug

环境配置详情

  • 发布端客户端timeSeriesPublisher:发布Topic A消息,Clean Session设为True,消息QoS为1
  • 订阅端客户端timeSeriesSubscriber:订阅Topic A,Clean Session设为False,消息QoS为1

正常预期行为

  1. 当timeSeriesSubscriber断开连接时,Mosquitto会将timeSeriesPublisher发送的所有消息存储在mosquitto.db中,等待订阅端读取
  2. 订阅端断开时重启broker,其订阅信息会被保留,新消息仍会被存储至mosquitto.db中

异常现象

但重启broker后向其发送SIGHUP信号,timeSeriesPublisher发送的新消息会被确认,但订阅端重新连接后无法接收,且未存储在mosquitto.db中,不符合持久化客户端定义:

客户端连接时设置clean session标志(又称clean start),若设为false则连接为持久化,客户端断开时订阅保留,后续QoS1/2消息会被存储至其再次连接。

简化复现步骤(2023年10月20日)

使用mosquitto_sub、mosquitto_pub和Mosquitto broker执行以下步骤:

  1. 配置环境及文件
  2. 启动broker与订阅端
  3. 发送一条消息
  4. 终止订阅端
  5. 终止broker
  6. 重新启动broker
  7. 发送一条消息
  8. 向broker发送SIGHUP信号
  9. 发送约4条消息
  10. 启动订阅端
  11. 终止broker与订阅端

若跳过步骤8则无异常;执行步骤8后,订阅端重新连接后无法接收预期消息,且消息未存入数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:35:15