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

问题描述 投票:0回答:1

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

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

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

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

embedded mqtt iot paho
1个回答
0
投票

((1)仅保证通过TCP / IP在QOS0处传递的消息已到达远程计算机的TCP堆栈,而不是到达正在运行的实际应用程序(是MQTT客户端还是MQTT代理)。

在较高的QOS上发送的消息不仅被主机的TCP / IP堆栈所识别,而且还被应用程序确认,因此您可以确定它已经被实际处理。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.