我曾与Mosquitto经纪人合作过:
1:订阅者使用Qos 2订阅主题,并且在收到消息后不响应Publish Received
;
2:发布者使用Qos 2发布消息;
我发现,即使订户尚未表明已收到(Publish Received
),代理也完成了与发布者的Qos 2握手,这意味着代理将成为代理,并确保订户在以下位置接收消息:至少一次,只有一次。
我很困惑,订户在什么情况下将无法收到消息?
我能想到的唯一情况是订户很忙,在粉碎之前没有及时读取数据包。因此,如果订户在CleanSession设置为0的情况下再次重新连接,则代理将重新发送该消息。这意味着Qos 1或2仅在将CleanSession设置为0模式时才能使用。
我真的很想知道为什么在基于TCP的协议MQTT下可能发生重试传递和消息丢失。