我一直在尝试找出QoS 1的流程,但这很难。
据我了解,当发布者发送一些具有QoS1的数据包时,它必须等待PUB ACK数据包。
我认为当经纪人收到PUB数据包时,它需要将其发送给所有订户。
然后,经纪人也成为发布者。
因此,代理将这个PUB数据包发送给所有订阅者
代理还等待所有订户的PUB ACK数据包。
当代理接收到所有PUB ACK数据包时,则将PUB ACK数据包发送到原始发布者(客户端)。
我对吗?
(对发布者和代理之间的流进行了描述,但对于代理和订阅者之间的流进行了描述)
答案 0 :(得分:3)
QoS一次仅在一个客户端和代理之间进行,没有端到端(发布者到订阅者)的传递通知。
完全有可能以QoS 1发布消息,但仅具有QoS 0的订阅者。您还可以具有多个订阅者,每个订阅者具有不同的QoS订阅,其中一些订阅者的QoS为0,某些订阅者的QoS为1,最后一些订阅者的QoS为2。
发布者与代理之间的QoS交换应在开始将消息继续传递给订阅者之前完成。
答案 1 :(得分:0)
为了执行来自hardillb的解释,经纪人无需等待其他订阅者发送PUBACK,然后再将PUBACK发送给原始发布者。 它可能取决于代理的实现,但只是使用PUBACK回复发布者,然后开始发布(是发布者本身)到可以使用不同QoS级别(0、1或2)进行订阅的订阅者。>
答案 2 :(得分:0)
协议消息确认与过程确认之间存在误解。消息确认确认消息的传递,并且过程确认应作为与设备分开的单独消息发送。
即使是在单个客户和经纪人之间,我们也始终建议客户在边缘设备完成其流程时实施自己的流程确认。