我是MQTT
的初学者,我认为我对该概念有误解。我已经使用QOS 1和2的红色节点发布了一条消息(例如:m1001),代理收到了该消息。那时,由于电源或互联网故障,订阅者或接收者都已断开连接。
当我现在重新连接到代理时,订户中未收到消息(例如:m1001),如果我设置了retain=true
,则消息将存储在代理中,并重复执行该消息,直到我手动清除它。
我要求每条消息都必须从pub传递到sub,而不会失败。我该如何实现?
答案 0 :(得分:1)
QOS适用于订阅者和发布者,并且仅在一个客户端和代理之间。这意味着,如果客户端将消息发布为QOS 1/2,则QOS握手仅在发布者和代理之间进行。订阅客户还需要请求QOS 1/2才能确保交付
要在重新连接时将消息传递给订户,他们需要在QOS 1/2处订阅该主题,并确保重新连接时将cleanSession标志设置为false。
保留的消息有所不同,当最后一条保留的消息订阅了匹配的主题时,它将始终传递给客户端,直到清除保留的消息为止(通过发布保留位为空的有效载荷)。