当前位置: 首页 > news >正文

MQTT之重复消息产生

1. MQTT协议特性导致的重复(本质原因

1.1 QoS机制引发
  • QoS 1(至少一次)

    • Broker未及时返回PUBACK时,设备会重发消息

    • 重发间隔通常为5-15秒(依赖实现)

    • // 设备端发布消息(QoS 1)
      mqttClient.publish("device/123/data", payload, 1, false);
    • 时序:sequenceDiagram
          participant Device
          participant Broker
          Device->>Broker: PUBLISH (PacketID=123)
          Broker--x Device: PUBACK (因网络延迟500ms)
          Note over Device: 在300ms超时后重发
          Device->>Broker: PUBLISH (PacketID=123 重传)
          Broker-->>Device: PUBACK (原始ACK到达)
          Broker-->>Device: PUBACK (重传ACK到达)
          Note over Broker: 同一消息处理两次
      场景一:ACK延迟导致的"双胞胎消息"
      比喻:
          就像你给朋友发微信问"晚上吃饭吗?",等了3分钟没收到回复,你又发了一遍。结果:
      你朋友其实

相关文章:

  • node-ddk,electron,主进程通讯,窗口间通讯
  • Django之旅:第五节--Mysql数据库操作(一)
  • 鸿蒙HarmonyOS NEXT之无感监听
  • CSS rem、vw/vh、less
  • 【汽车传感系统架构:借助传感获取安全】
  • GAMES101-现代计算机图形学入门(Ray Tracing)
  • SpringBoot集成kafka极简教程
  • 宝塔:网站监控监控表没有数据异常处理
  • ROS多机通信(三)——Ubuntu Ad-Hoc 组网通信配置指南
  • 更新docker 容器时,提前换后端jar 包,为什么会存在异常
  • Oracle到达梦数据库迁移:技术要点与实践分享
  • Python SciPy面试题及参考答案
  • 推荐 --召回模型 DSSM, YoutubeDNNd
  • OPTICS聚类算法原理详解
  • 目标检测20年(四)——最终章
  • 使用MyBatis Plus的QueryWrapper实现复杂的SQL查询
  • macbook电脑如何清理键盘防止误触
  • SpringBoot 3+ Lombok日志框架从logback改为Log4j2
  • 深入浅出Spring-Boot-3.x.pdf
  • 游戏引擎学习第184天
  • 乌美矿产协议文本公布,明确乌收益及协议优先级
  • 孕妇乘坐高铁突发临产,广西铁路部门协助送医平安产子
  • 2025年“投资新余•上海行”钢铁产业“双招双引”推介会成功举行
  • 中国建设银行浙江省分行原党委书记、行长高强接受审查调查
  • 港交所与香港证监会就“中概股回流意向”已与部分相关企业进行接触
  • 绿地控股:今年一季度营业收入356亿元,中高层管理人员带头降薪