【问题标题】:Which part of the messaging does the MQTT QoS refer to?MQTT QoS 指的是消息传递的哪一部分?
【发布时间】:2020-08-27 19:12:10
【问题描述】:

在讨论 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 是由代理发布还是由客户通过代理转发。

感谢您的考虑!

【问题讨论】:

    标签: client mqtt broker qos


    【解决方案1】:

    关于 QOS 握手,要记住的重要一点是,它们只发生在单个客户端和代理之间。 MQTT 中没有端到端的交付通知。

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

    如果客户端 B 以 QOS 1 订阅,那么它会在收到消息后以 PUBACK 响应代理。

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

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

    你不应该这样想,客户端 A 不是向客户端 B 发布消息,而是向客户端 B 恰好订阅的主题发布消息。

    您必须记住,客户端 A 在 MQTT 协议级别上对客户端 B 完全一无所知,可能有 0 到无限个客户端订阅了 A 向其发布消息的主题。也可能存在对同一主题具有持久订阅但当前处于脱机状态的客户端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      相关资源
      最近更新 更多