MQTT消息订单是否可以在简化情况下得到保证? [英] can mqtt msg delivery order be guaranteed in simplified case?

查看:17
本文介绍了MQTT消息订单是否可以在简化情况下得到保证?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

能否保证订户侧的邮件发货订单与发布商侧的发送订单相同?它是否会受到QoS的影响?

推荐答案

MQT3.1.1spec章节4.6介绍消息排序:

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消息,则可能会重新发送,这可能会导致重新传送无序。

这篇关于MQTT消息订单是否可以在简化情况下得到保证?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆