首页 > 解决方案 > mqtt 接收器未获取数据

问题描述

我是初学者MQTT,我想我误解了这个概念。我已经使用带有 QOS 1 和 2 的红色节点发布了一条消息(例如:m1001),代理收到了该消息。那时,订阅者或接收者由于电源或互联网故障而断开连接。

当我现在重新连接到代理时,我没有在订阅者中收到消息(例如:m1001),如果我设置retain=true,消息将存储在代理中并重复执行消息,直到我手动清除它。

我要求每条消息都从 pub 传递到 sub 而不会失败。我怎样才能做到这一点?

标签: mqttnode-red

解决方案


QOS 适用于订阅者和发布者,并且仅在一个客户端和代理之间。这意味着如果客户端以 QOS 1/2 发布消息,则 QOS 握手仅在发布者和代理之间进行。订阅客户端还需要请求 QOS 1/2 才能确保交付

要在订阅者重新连接时将消息传递给订阅者,他们需要以 QOS 1/2 订阅主题,并确保在重新连接时将 cleanSession 标志设置为 false。

保留的消息是不同的,当客户端订阅匹配的主题时,最后保留的消息将始终传递给客户端,直到保留的消息被清除(通过发布设置了保留位的空有效负载)。


推荐阅读