我正在尝试从间歇连接的MQTT中获取某种特殊形式的QOS,并且我想知道我的用例是否可以通过协议完全实现。我需要通过不可靠的低带宽链接将客户端连接到代理。
当客户端重新连接时,我希望它赶上关闭时发生的事情,所以我想我需要持久的会话。
但是,如果在客户端关闭时给定主题下的有效负载更改了十二次,我只想接收最新版本,而不是11个过时的版本。
如果在客户端断开连接的情况下给定主题下的有效负载没有更改,我不希望在重新连接后重新发送。
我的理解是,QOS1消息将在重新连接后立即传递到持久性会话,但是客户端除了需要唯一的最新版本外,还将收到11条过时的消息。
我还了解到,保留QOS0的消息只会发送到干净的会话,而不发送到可能已经收到该主题的消息的重新连接的持久性会话。
如果我使用带有QOS0保留消息的干净会话,则客户端将在连接时仅接收每个主题的最新版本,但是代理也将重新发送在连接断开时其有效负载没有更改的主题,这不是可接受的带宽。
答案 0 :(得分:0)
否,更改QOS级别不会更改保留消息的行为,排队等待脱机客户端的所有未传递的QOS1 / 2消息将不仅仅传递最新的消息。
我需要仔细检查,但我还认为保留的消息也将传递到重新连接的持久性会话(无论QOS如何)。