订阅MQTT主题(可能包含通配符)之后,是否有办法确定已收到订阅主题的所有保留消息?
(更准确:在订阅时,所有存储的消息都保留在代理处的消息)
如果没有直接的方式,是否有任何黑客知道它(比如向订阅的主题发送具有特定QoS的新保留消息,这肯定是在旧消息之后收到的)?
我的问题的背景是我要实现的此功能请求(https://github.com/marvinroger/homie-esp8266/issues/313)。
所以这将是带有AsyncMQTT库的arduino(ESP8266)的参考实现,但我的问题对于其他实现也是有效的(例如使用paho-mqtt等)。
答案 0 :(得分:2)
简短回答,不。
客户无法知道哪些主题可能会在任何时候等待保留消息,请在订阅时单独使用。
您唯一能做的就是确保您在QOS 1或2订阅,此时经纪商将尽一切努力将其交付给您。
唯一的迹象是第一个无保留消息的到达,因为经纪人应该(我认为)在任何新消息之前传递所有保留的消息。但是,如果对该主题的任何更新都可能被标记为保留,这可能没有帮助,那么您需要在不同的主题上使用(无保留)消息来获得感觉。
答案 1 :(得分:0)