发布者db和mosquitto broker db mqtt之间的同步

时间:2016-08-13 17:35:51

标签: mqtt iot mosquitto

我的发布商和经纪商正在开发不同的系统。发布者具有本地数据库,用于存储新的出站消息。我想问一下,当发布者与代理失去连接时,发布者本地数据库与代理DB(mosquitto.db)之间可能会同步,然后如果订阅者连接到代理或连接到代理,代理会自动将这些消息发送给订阅者经纪人。

1 个答案:

答案 0 :(得分:0)

mosquitto.db存储完全是为了让Mosquitto代理保持内部状态,这包括哪些客户端具有持久会话以及这些客户端的任何排队消息。无法从其他任何地方访问它。

如果发布者离线,然后您尝试发布消息,它将抛出异常,由您作为开发人员来捕获异常,存储消息并在发布者重新连接后尝试重新发送经纪人。

paho客户端回调有一个方法(deliveryComplete()),一旦消息离开客户端的控件就会被调用(这在它到达QOS 1或2的代理时有效)。发送邮件时,您应该按照以下步骤操作:

  1. 将任何新邮件存储在publishers本地数据库中
  2. 尝试将其发送给经纪人
  3. 调用deliveryComplete时,从数据库中删除它(或将其标记为已发布)。
  4. 在重新连接到代理时,应检查数据库是否有任何未完成的消息,并且应该发布它们。