发布者数据库和 mosquitto 代理数据库 mqtt 之间的同步

Synchronization Between publisher db and mosquitto broker db mqtt

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

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

如果发布者下线,然后您尝试发布一条消息,它会抛出异常,作为开发者,您需要捕获异常,存储消息并在发布者稍后尝试重新发送它重新连接到代理。

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

  1. 将任何新消息存储在发布者本地数据库中
  2. 尝试发送给经纪人
  3. 调用 deliveryComplete 时将其从数据库中删除(或标记为已发布)。

重新连接到代理时,应检查数据库是否有任何未完成的消息并应将其发布。