我的发布商和经纪商正在开发不同的系统。我使用QOS = 2来传递消息。我正在使用python paho mqtt broker。它是MQTT的进一步扩展 - 有没有办法检查客户端是否仍然连接
1)当我向连接的代理发布消息时,它通过调用on_publish()回调来确认我。但是当我将在不同机器上运行的代理与网络断开连接时,发布者将发布消息存储在本地计算机上,当我将代理连接到网络时,它再次将所有先前的消息发布到代理。我认为这些消息存储为机上消息(未确认),如果这些消息是飞行消息,那么存储这些消息的地方,这些机上消息是否有任何限制,因为我的代码中没有包含有关机上信息的任何内容。
答案 0 :(得分:1)
未传递的Mqtt消息(客户端未收到PUBREL数据包)存储在其本地会话存储区域中。 。类似地,如果服务器没有收到PUBCOMP对其PUBREL消息的响应,则必须将该消息视为未确认,并将相关会话状态存储在其本地会话存储区域中。
双方(服务器和客户端)的缓存大小直接由客户端或服务器的配置决定。这在OASIS标准第4.1节开头的第一个非规范性评论中提到。
对QoS 2消息的此过程有一个很好的描述(如果偶尔会引起混淆)答案 1 :(得分:0)