MQTT paho客户端发布消息,并在接收方使用消息后立即将其删除

MQTT paho客户端发布消息,并在接收方使用消息后立即将其删除,mqtt,Mqtt,我一直在尝试与paho mqtt客户机合作,以MOSQUITO作为代理发布和接收消息,效果很好。尽管我的用例涉及发送者向代理发布消息并断开连接,但此时,接收方(无论连接与否)应该使用该消息并立即将其删除。我已经使用了所有属性,例如QOS、保留消息、干净会话等,但没有一个能够产生我想要的结果。请提供帮助。假设在QOS2进行发布和订阅,则消息将只发送给订阅者一次,无需从任何位置删除任何内容 如果您试图确保消息只被一个特定的客户机使用,那么我认为您对MQTT是什么存在误解 MQTT是一种发布/订阅协议

我一直在尝试与paho mqtt客户机合作,以MOSQUITO作为代理发布和接收消息,效果很好。尽管我的用例涉及发送者向代理发布消息并断开连接,但此时,接收方(无论连接与否)应该使用该消息并立即将其删除。我已经使用了所有属性,例如QOS、保留消息、干净会话等,但没有一个能够产生我想要的结果。请提供帮助。

假设在QOS2进行发布和订阅,则消息将只发送给订阅者一次,无需从任何位置删除任何内容

如果您试图确保消息只被一个特定的客户机使用,那么我认为您对MQTT是什么存在误解

MQTT是一种发布/订阅协议,因此设计用于将订阅服务器与发布服务器完全解耦。发布者不知道有多少订阅者,只知道发布了一条到给定主题的消息

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

从MQTT协议v5开始(截至2018年9月,大多数代理和客户机目前仍仅支持v3),包括一种称为共享订阅*的内容,可用于向一组客户机循环传递给定主题的消息,因此只有一组客户机将接收此消息,但这并不阻止不属于组的客户端也接收消息

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


*一些v3代理已经实现了这方面的适当版本。

“无论连接或断开,接收方都应该使用此消息”断开连接的接收方如何使用消息?当消费者断开连接并重新连接时,这更有意义。如果配置正确,代理将为主题存储一条消息。消费者在连接时会收到这条消息。你会尝试哪种具体的配置?你需要在这里更清楚地解释你的最终目标,你想要避免什么样的情况?谢谢#hardillb,也许我不太理解mqtt的概念,我们将阅读更多关于它的内容