【问题标题】:Is there a way to assure a message's been delivered to the broker in MQTT with Paho MQTT for Python?有没有办法使用 Paho MQTT for Python 确保将消息传递到 MQTT 中的代理?
【发布时间】:2020-01-09 12:49:37
【问题描述】:

我将 Python 与 paho-mqtt 库一起用于一个应用程序,在该应用程序中,我将有多个设备通过 3G 连接到代理,不断发送将存储在数据库中的数据。由于这些数据非常重要,我需要某种确认,以确认来自设备的 MQTT 消息已成功传送到代理。有没有办法做到这一点?

【问题讨论】:

  • 保证这个MQTT的特性叫做QoS,可以在publish()上设置。
  • @KlausD。请考虑从您的评论中起草一个正确的答案。
  • 如果您正在使用它,例如为了分发任务,任务的接收者用任务 ID 或类似的东西来响应也是很常见的。 QoS 很好,但是您不知道接收者对您的消息的看法,只知道他收到了;)

标签: python python-3.x mqtt mosquitto


【解决方案1】:

在发布方法上,您可以设置 QoS 1 或 2。QoS 级别 1 保证消息至少一次传递给接收者。发送方存储消息,直到从接收方收到确认收到消息的 PUBACK 数据包。一条消息可以多次发送或传递。 QoS 2 是 MQTT 中最高级别的服务。此级别保证每条消息仅由预期的收件人接收一次。 QoS 2 是最安全和最慢的服务质量级别。该保证由发送方和接收方之间的至少两个请求/响应流(四部分握手)提供。发送方和接收方使用原始 PUBLISH 消息的包标识符来协调消息的传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-19
    • 2023-04-09
    • 2021-10-15
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多