微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MQTT QoS指的是消息传递的哪一部分?

如何解决MQTT QoS指的是消息传递的哪一部分?

在讨论MQTT QoS时我很困惑。

假设我们有一个具有两个活动客户端A和B的代理。我们要从A发布一条专用于客户端B的MQTT消息,并确保订阅主题的客户端B收到此消息。

我不确定QoS级别是否是处理此任务的正确工具。

使用QoS 1或2,是否可以确保至少一个(qos = 1)或恰好一个(qos = 2)订户正确地获得了该消息,或者一旦代理正确地获得了消息,它是否已经确认? 对于后一种情况,那么QoS 1的含义是什么(因为总之只有一个代理)?

从这些https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels/这样的文档中,我不清楚PUBACK是由代理发布的还是通过代理从客户端转发的。

谢谢您的考虑!

解决方法

要记住的有关QOS握手的重要事情是,它们仅在单个客户端和代理之间进行。 MQTT中没有端到端交付通知。

因此,当客户端A在QOS 1上发布消息时,代理将在收到消息后以PUBACK进行响应。

如果客户端B在QOS 1上订阅,则一旦收到消息,它将使用PUBACK响应代理。

这两组动作完全相互独立。

假设我们有一个拥有两个活跃客户A和B的经纪人。 从专用于客户端B的A发布MQTT消息,并确保 订阅该主题的客户端B收到此消息。

您不应以这种方式思考,客户端A不会向客户端B发布消息,而是向客户端B恰好已订阅的主题发布消息。

您必须记住,客户端A在MQTT协议级别对客户端B完全一无所知,可能有0到无限个客户端订阅了A向其发布消息的主题。可能还会有一些客户端永久订阅该主题,而这些客户端当前处于离线状态。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。