标签: embedded mqtt iot paho
我一直在使用Paho C库在严格资源限制的嵌入式设备上开发始终连接的MQTT客户端。这是我的问题:
除了代理和客户端崩溃之外,还有其他原因导致QoS 0消息未到达目的地吗?
在订阅请求中,代理是否可能不接受请求的QoS?
在什么情况下可以多次接收QoS 1消息?
答案 0 :(得分:3)
(1)仅保证通过TCP / IP在QOS0处传递的消息已到达远程计算机的TCP堆栈,而不是到达正在运行的实际应用程序(是MQTT客户端还是MQTT代理)。
应用程序不仅会确认以更高的QOS发送的消息,而不仅仅是主机的TCP / IP堆栈,因此您可以确定它是否已被实际处理。
(2)某些代理可能仅支持QOS 0或QOS 0/1(例如AWS IoT),并且如doc中所述,SUBACK消息包括已授予的QOS级别,该级别可能不匹配要求什么。因此,即使订阅客户端
(3)如果客户端在处理完消息后崩溃,但在发送PUBACK之前崩溃,则代理可以尝试在客户端重新连接时再次传递消息。