2017-10-06 56 views
2

我正在研究亞馬遜物聯網作爲定期測量數據的移動設備的傳輸機制(通常每N分鐘,N爲2到32分鐘之間的任何地方)。利用MQTT,我可以利用亞馬遜的經紀商將完成的測量結果發佈給QoS = 1的訂戶。我們還假設我的唯一用戶只是監聽通配符主題(例如abc /#)的另一個設備,並將發佈的消息存儲到本地數據庫中。Aws物聯網消息傳遞

但現在它也有可能是:

the publishing mobile devices have spotty/bad/no connection to the cell network, 
the subscriber dies (reboots, software failure, hardware failure, maintenance, etc.) 

假設我使用官方的Java SDK。在這些時間發佈的數據中,至少其中一個離線時會發生什麼情況?訂閱者是否可以獲得重新連接時所遺漏的所有消息?

另外:這是否取決於有問題的協議?出於測試目的,我們使用WebSockets,但後來的開發/生產中,我們更傾向於使用MQTT而非SSL。

回答

1

在這些時間內至少有 處於脫機狀態時發佈的數據會發生什麼情況?用戶是否會收到重新連接時錯過 的所有消息?

是的,如果您使用QoS級別1或更高的MQTT,因爲MQTT採用了主題的發佈者/訂戶體系結構。發往QoS級別爲1及更高的主題的郵件將由MQTT服務器在內存中和磁盤上存儲郵件(Atleast mosquitto),直到訂閱者訂閱爲止。

WebSocket是不同的。它沒有發佈者/訂戶體系結構。它是單個TCP連接上的雙工通信模型。 WebSocket啓動爲一個HTTP連接,該連接將更新爲WebSocket連接。在WebSocket的情況下,應用程序有責任確保當訂閱者存在連接問題時會發生什麼情況。