我们在A位置有蚊子经纪人,而兔子MQ在云中。我们已经把两位经纪人联系起来了。来自在Mosquito中配置的主题的数据将在兔子MQ中的AMQ.Topic中发布。
如果失去连通性,在重新建立连接后,蚊子经纪人提供的数据是否会被传递。
在制定这样的解决方案时,我们应该牢记些什么?
发布于 2015-08-13 08:07:49
这取决于如何配置桥接器。
一般来说,MQTT客户机有两种类型,durable/persistent或non-durable/non-persistent.。这是在连接时使用干净会话标志来控制的。
持久/持久客户端
当持久客户端连接(干净会话设置为0)时,代理将在断开连接后维护有关该客户端的信息。这意味着对该客户端的订阅,可能意味着当它重新连接时(使用相同的客户端id!)准备交付的消息!
默认情况下,根据MQTT规范,只有当订阅和消息都使用大于0的QoS时,消息才会排队等待断开连接的持久客户端。Mosquitto提供了对所有消息进行排队的功能,但是规范中没有涉及到这一点,因此您不能依赖于其他代理程序。
还有其他的注意事项--只有有限数量的消息将排队等待脱机客户端。这可以配置在使用max_queued_messages选项的蚊子上。
非持久/非持久客户端
当非持久客户端(干净会话设置为1)连接时,服务器在断开连接后将不会保留有关该客户端的任何信息。
如果客户端连接为持久的,则重新连接为非持久的,则所有存储的信息将在非持久版本连接后立即删除。
桥梁
同样的原则也适用于桥接器,因此您需要将桥配置为持久的(干净会话0),并对消息使用QoS>0。您还需要确保最大排队的消息适合您的需要。
https://stackoverflow.com/questions/31980126
复制相似问题