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

MQTT之重复消息产生

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

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

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

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

    • // 设备端发布消息(QoS 1)
      mqttClient.publish("device/123/data", payload, 1, false);
    • 时序:sequenceDiagramparticipant Deviceparticipant BrokerDevice->>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.mrgr.cn/news/96042.html

相关文章:

  • Android HAL 架构详解,底层开发不再难
  • idea 快捷键
  • AI 算力计算方式
  • 微信小程序登录和获取手机号
  • SSML(Speech Synthesis Markup Language)简介
  • 【C++指针】搭建起程序与内存深度交互的桥梁(下)
  • STM32 MODBUS-RTU主从站库移植
  • 微信小程序学习
  • Vue3项目中的.vscode文件夹
  • 【React】List使用QueueAnim动画效果不生效——QueueAnim与函数组件兼容性问题
  • CCF CSP 第33次(2024.03)(2_相似度计算_C++)(字符串中字母大小写转换+哈希集合)
  • 【软件测试】:软件测试实战
  • 3.26[a]paracompute homework
  • vue遗漏的知识点(动态组件.)
  • openpnp,cadence SPB17.4,placement - 从allegro中导出坐标文件的选项会影响贴片精度
  • PyTorch处理数据--Dataset和DataLoader
  • 详解java体系实用知识总结
  • K8S学习之基础五十二:k8s配置jenkins
  • 我的世界1.20.1forge模组进阶开发教程——结构(3)
  • 我的世界进阶教程——结构(2)