在 MQTT 会话中始终使用 QoS 0 有什么问题?



我一直在使用Paho C库在严格资源约束的嵌入式设备上开发一个始终连接的MQTT客户端。以下是我的问题:

  1. 除了代理和客户端崩溃之外,QoS 0消息没有到达目的地还有其他原因吗?

  2. 在订阅请求中,代理是否可能不接受请求的QoS?

  3. 在什么情况下可以多次接收QoS 1消息?

(1(通过TCP/IP在QOS0传递的消息只能保证到达远程机器的TCP堆栈,而不能到达正在运行的实际应用程序(无论是MQTT客户端还是MQTT代理程序(。

以较高QOS发送的消息不仅由主机的TCP/IP堆栈确认,还由应用程序确认,这意味着您可以更确定它是否已被处理。

(2( 一些代理可能只支持QOS 0或QOS 0/1(例如AWS IoT(,并且如文档中所述,SUBACK消息包括被授予的QOS级别,该级别可能与所请求的不匹配。因此,即使订阅客户端

(3( 如果客户端在处理完消息后但在发送PUBACK之前崩溃,则代理可以在客户端重新连接时尝试再次传递消息。

最新更新