【问题标题】:MQTT Broker Bridge data persistenceMQTT Broker Bridge 数据持久化
【发布时间】:2015-08-13 05:29:29
【问题描述】:

我们在位置 A 有 Mosquito 代理,而 Rabbit MQ 在云中。我们已经连接了两个经纪人。 Mosquito 中配置的 Topic 中的数据正在 Rabbit MQ 中的 AMQ.Topic 中发布。

如果连接丢失,在重新建立连接后,Mosquito broker 上可用的数据是否会被传递。

在开发此类解决方案时我们应该牢记哪些事项?

【问题讨论】:

    标签: mqtt mosquitto


    【解决方案1】:

    这取决于您如何配置网桥。

    一般来说,MQTT 客户端有两种类型,durable/persistentnon-durable/non-persistent强>。这是在连接时使用 clean session 标志控制的。

    持久/持久的客户

    当持久客户端连接时(干净会话设置为 0),代理将在断开连接后维护有关该客户端的信息。这意味着该客户端的订阅以及可能在重新连接时准备好发送的消息(使用相同的客户端 ID!)

    默认情况下,根据 MQTT 规范,如果订阅和消息都使用大于 0 的 QoS,则消息只会为断开连接的持久客户端排队。Mosquitto 提供了将所有消息排队的功能,但这不是规范涵盖,因此您不能将其依赖于其他经纪人。

    还有其他注意事项 - 只有有限数量的消息会排队等待离线客户端。这可以在 mosquitto 上使用max_queued_messages 选项进行配置。

    非持久/非持久客户端

    当非持久客户端(clean session 设置为 1)连接时,服务器在断开连接后将不会保留有关该客户端的任何信息。

    如果客户端连接为持久版本,然后重新连接为非持久版本,则一旦非持久版本连接,所有存储的信息将被删除。

    桥梁

    同样的原则也适用于网桥,因此您需要将网桥配置为持久的(干净的会话 0),并为您的消息使用 QoS>0。您还需要确保最大排队消息适合您的需要。

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      相关资源
      最近更新 更多