我有一個發件人在主題上發送消息的場景。但有一個以前從未連接的客戶端,連接和訂閱相同的主題。他如何能夠接收到新連接的客戶端以前出現在該主題上的所有消息。Mqtt中的消息Android
我用cleanSession =假沒有任何反應
我用留存消息=真。然後只收到最後一條消息。
我有一個發件人在主題上發送消息的場景。但有一個以前從未連接的客戶端,連接和訂閱相同的主題。他如何能夠接收到新連接的客戶端以前出現在該主題上的所有消息。Mqtt中的消息Android
我用cleanSession =假沒有任何反應
我用留存消息=真。然後只收到最後一條消息。
簡短的答案是你不能。
代理只會爲已有會話的客戶端排隊消息(已使用cleanSession = false登錄至少一次)。
保留消息只保留髮送到該主題的最後一條消息。
如果你想歷史的消息像你描述的,那麼你需要將它們存儲在數據庫中,並通過一些其他的機制(例如HTTP)
該券商存儲請求他們的最後保留的消息,併爲相應的QoS話題。訂閱主題模式的每個客戶端都會在訂閱後立即收到消息,該主題模式與保留消息的主題相匹配。
對於每個主題,只有一個保留消息將由代理存儲。因此,您無法獲取所有保留的消息