当前位置: 首页 > 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分钟没收到回复,你又发了一遍。结果:
      你朋友其实
http://www.dtcms.com/a/92978.html

相关文章:

  • 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天
  • Linux操作系统7- 线程同步与互斥7(RingQueue环形队列生产者消费者模型改进)
  • RK3568 设备树基础语法讲解
  • QLoRA和LoRA 微调
  • RK3568笔记八十一: Linux 小智AI聊天机器人移植
  • ctfshow做题笔记—栈溢出—pwn73、pwn74
  • 在 Mermaid 流程图里“驯服”quot;的魔法指南!!!
  • Maven仓库配置
  • React 组件之间的通信
  • Axure项目实战:智慧城市APP(完整交互汇总版)
  • 解析信息归属地与网络安全的关联