paho mqtt客户经纪人连接

时间:2016-09-05 05:37:31

标签: mqtt iot mosquitto

我的发布商和经纪商正在开发不同的系统。我使用QOS = 2来传递消息。我正在使用python paho mqtt broker。它是MQTT的进一步扩展 - 有没有办法检查客户端是否仍然连接

1)当我向连接的代理发布消息时,它通过调用on_publish()回调来确认我。但是当我将在不同机器上运行的代理与网络断开连接时,发布者将发布消息存储在本地计算机上,当我将代理连接到网络时,它再次将所有先前的消息发布到代理。我认为这些消息存储为机上消息(未确认),如果这些消息是飞行消息,那么存储这些消息的地方,这些机上消息是否有任何限制,因为我的代码中没有包含有关机上信息的任何内容。

2 个答案:

答案 0 :(得分:1)

未传递的Mqtt消息(客户端未收到PUBREL数据包)存储在其本地会话存储区域中。 。类似地,如果服务器没有收到PUBCOMP对其PUBREL消息的响应,则必须将该消息视为未确认,并将相关会话状态存储在其本地会话存储区域中。

双方(服务器和客户端)的缓存大小直接由客户端或服务器的配置决定。这在OASIS标准第4.1节开头的第一个非规范性评论中提到。

the OASIS standard

对QoS 2消息的此过程有一个很好的描述(如果偶尔会引起混淆)

答案 1 :(得分:0)

Paho mqtt Python客户端目前还没有提供磁盘缓冲。

对于Paho Java客户端,默认情况下,机上消息会保存在内存中(1)。为了在电源故障后保留消息,您可以提交名为MqttDefaultFilePersistence(2)的持久性类