首页 文章

paho mqtt客户经纪人连接

提问于
浏览
1

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

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

2 回答

  • 0

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

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

    the OASIS standard有一个很好的描述(如果偶尔会混淆)QoS 2消息的这个过程的描述

  • 1

    Paho mqtt Python客户端目前不提供磁盘缓冲 .

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

相关问题