MQTT paho 客户端发布消息并立即删除接收方使用它



我一直在尝试与 paho mqtt 客户端合作,以 mosquitto 作为代理发布和接收消息,并且工作正常。我的用例虽然涉及发送方向代理发布消息并断开连接,但此时,接收方无论连接还是断开连接都应使用此消息并立即将其删除。我已经使用了所有属性,例如 QOS、保留消息、干净会话等,但没有一个产生我想要的结果。请帮忙。

假设在QOS2 发布和订阅,消息只会传递给订阅者一次,没有任何内容可以从任何地方删除。

如果您试图确保消息仅由一个特定客户端使用,那么我认为您对MQTT是什么有误解。

MQTT 是一种 PUB/SUB 协议,因此旨在将订阅者与发布者完全分离。发布者不知道有多少订阅者,只是知道它已经向给定主题发布了一条消息。

0 到 N(其中 N 可以是任意数量(的客户端可以订阅该主题。使用 QOS、持久订阅和干净会话标志,客户端可以向代理指示它希望接收自上次连接以来发布的任何消息,但这不会影响可能也订阅了该主题的任何其他客户端。

从 MQTT 协议 v5 开始(截至 2018 年 9 月,大多数代理和客户端目前仍仅支持 v3(包含称为共享订阅*的内容,可用于将给定主题上的消息轮询传递到一组客户端,因此只有 1 个客户端会收到此消息,但这并不妨碍不属于该组的客户端也接收消息。

发布到主题的保留标志集的最后一条消息将在所有客户端订阅主题时传递给它们。可以通过发布具有空有效负载和保留标志集的新消息来清除此消息。客户端可以在收到保留的消息后立即发布这样的消息,但仍会有一个计时窗口,其他客户端可以在其中订阅和接收保留的消息。

*一些 V3 代理已经实现了此的专有版本。

最新更新