当使用 MQTT 和 Qos 1 时,不需要从订阅者向代理发送 PUBACK 数据包吗?

use*_*024 3 broker mqtt

我一直试图找出QoS 1的流程,但这很难。

据我了解,当发布者发送一些具有 QoS1 的数据包时,它必须等待 PUB ACK 数据包。

我认为当代理收到 PUB 数据包时,它需要将其发送给所有订阅者。
然后,经纪人也变成了发行商

因此,代理将此 PUB 数据包发送给所有订阅者
,并且代理还等待来自所有订阅者的 PUB ACK 数据包。
当代理收到所有的 PUB ACK 数据包时,然后将 PUB ACK 数据包发送给原始发布者(客户端)。

我对吗?
(有发布者和代理之间的流程的描述,但没有代理和订阅者之间的流程的描述)

har*_*llb 5

QoS 一次只存在于一个客户端和代理之间,没有端到端(发布者到订阅者)传送通知。

完全有可能以 QoS 1 发布消息,但只有 QoS 0 的订阅者。您还可以拥有多个订阅者,每个订阅者具有不同的 QoS 订阅,一些订阅者为 QoS 0,一些订阅者为 QoS 1,最后一些订阅者为 QoS 2。

发布者和代理之间的 QoS 交换应在开始将该消息传递给订阅者之前完成。

  • 然后,当发布者(客户端)收到发布确认数据包时,仅意味着代理很好地收到了发布数据包。此外,发布者(客户端)并不关心代理是否很好地完成了他的工作,因为发布确认数据包不是端到端的。我做对了吗? (2认同)