我想使用Python开发物联网应用程序,该应用程序可以在船上运行,并在网络连接可用时偶尔发送数据。大约有10%的情况是这种情况。
是否有任何模式/实现可以准确地处理此用例?我已经阅读了有关MQTT和RabbitMQ / AMQP的信息,但是实现期望客户端在发送消息时到达代理。我需要的是某种本地持久性,它会建立本地队列并在检测到连接时发送消息。
[我知道我可以为我自己,也可以为我们提供一个SQLite数据库,但是我认为这并不是一个罕见的用例,因此我确定必须为此提供解决方案,而我只是使用了错误的搜索词。
您正在寻找的模式已经在标准PAHO MQTT客户端中实现,作为服务质量(QOS)流程的一部分。您需要做的就是调用参数'qos'等于2的方法'publish'。该框架将为您处理所有其他事情,并自动缓冲消息,直到连接可用为止。
但是有两点需要注意:-缓冲区是内存中的缓冲区,在断电的情况下,所有消息都将丢失。如果在这种情况下不能丢失消息,则必须将消息永久存储到本地文件/数据库中。