MQTT代理桥数据持久性

MQTT代理桥数据持久性,mqtt,mosquitto,Mqtt,Mosquitto,我们在位置A有蚊子经纪人,兔子MQ在云中。我们联系了两位经纪人。蚊子中配置的主题中的数据将在Rabbit MQ中的AMQ.Topic中发布 在连接丢失的情况下,将在重新建立连接后传递蚊子代理上可用的数据 在开发此类解决方案时,我们应该记住哪些事项?这取决于您如何配置网桥 通常,MQTT客户端有两种类型,持久的/持久的或非持久的/非持久的。这是在连接时使用清除会话标志控制的 持久/持久客户端 当持久客户端连接时(clean session设置为0),代理将在断开连接后维护有关该客户端的信息。这意味

我们在位置A有蚊子经纪人,兔子MQ在云中。我们联系了两位经纪人。蚊子中配置的主题中的数据将在Rabbit MQ中的AMQ.Topic中发布

在连接丢失的情况下,将在重新建立连接后传递蚊子代理上可用的数据


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

这取决于您如何配置网桥

通常,MQTT客户端有两种类型,持久的/持久的非持久的/非持久的。这是在连接时使用清除会话标志控制的

持久/持久客户端 当持久客户端连接时(clean session设置为0),代理将在断开连接后维护有关该客户端的信息。这意味着该客户端的订阅以及可能在其重新连接时准备好传递的消息(使用相同的客户端id!)

默认情况下,根据MQTT规范,如果订阅和消息使用的QoS都大于0,则消息仅为断开连接的持久客户端排队。Mosquitto提供了对所有消息进行排队的能力,但是规范没有涵盖这一点,因此您不能将其用于其他代理

还有其他注意事项-只有有限数量的消息将排队等待脱机客户端。这可以使用
max\u queued\u messages
选项在MOSQUITO上配置

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

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

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