2017-10-06 55 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的情况下,应用程序有责任确保当订阅者存在连接问题时会发生什么情况。