简化情况下能否保证mqtt消息送达顺序?

2024-05-03

如果只有一个代理、一个发布者、一个主题和干净的会话,在这个简化的情况下,

能否保证订阅者端的消息传递顺序与发布者端的发送顺序相同?会受到QoS的影响吗?


Section 4.6 http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718105来自 MQTT 3.1.1spec http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html涵盖消息排序:

4.6 消息排序

客户端在实现协议流程时必须遵循这些规则 本章其他地方定义:

  • 当它重新发送任何 PUBLISH 数据包时,它必须按照原始 PUBLISH 数据包的发送顺序重新发送它们(这适用于 QoS 1 和 QoS 2 消息)[MQTT-4.6.0-1]
  • 它必须按照接收相应 PUBLISH 数据包的顺序发送 PUBACK 数据包(QoS 1 消息) [MQTT-4.6.0-2]
  • 它必须按照接收相应 PUBLISH 数据包的顺序发送 PUBREC 数据包(QoS 2 消息) [MQTT-4.6.0-3] 它必须按照相应 PUBREC 数据包的接收顺序发送 PUBREL 数据包(QoS 2 消息) [MQTT-4.6.0-4]

默认情况下,服务器必须将每个主题视为“有序主题”。它 可以提供管理或其他机制来允许一个或多个 被视为“无序主题”的主题 [MQTT-4.6.0-5]。

当服务器处理已发布到某个服务器的消息时 已订购主题,发送时必须遵循上述规则 向每个订阅者发送消息。此外,它必须发送 PUBLISH 数据包发送给消费者(对于相同的主题和 QoS)的顺序如下: 它们是从任何给定客户端 [MQTT-4.6.0-6] 收到的。

读完后,我得出的结论是,消息通常会按顺序发送(除非代理专门设置为使用无序主题),但如果未正确确认高 QOS 消息,则可能会重新发送,这可能会导致消息不按顺序重新传送。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简化情况下能否保证mqtt消息送达顺序? 的相关文章

  • -moz-background-clip:text 在 Firefox 中不起作用

    我正在尝试用图像填充 h1 标签中的文本内容 根据我的理解 我在 html 中执行以下操作 div class image clip h1 MY WONDERFULL TEXT h1 div 并在 css 文件中 image clip ba
  • Ember 未在生产环境中加载某些图像

    我有一个 Ember cli 1 13 应用程序 它在公共目录中存储了很多图像 现在 它将正确加载除特定组件中的图像之外的所有图像 该组件的调用方式如下 list item url list url name List Name price

随机推荐