Java Aws物联网消息传递

Java Aws物联网消息传递,java,amazon-web-services,mqtt,iot,aws-iot,Java,Amazon Web Services,Mqtt,Iot,Aws Iot,我正在研究Amazon IoT作为移动设备定期测量数据的传输机制(通常每N分钟,N在2到32分钟之间)。有了MQTT,我可以利用Amazon的代理将完成的测量结果发布给QoS=1的订阅者。我们还假设我唯一的订阅者只是另一台监听通配符主题(例如abc/#)并将发布的消息存储到本地数据库中的设备 但现在也有可能: the publishing mobile devices have spotty/bad/no connection to the cell network, the subscribe

我正在研究Amazon IoT作为移动设备定期测量数据的传输机制(通常每N分钟,N在2到32分钟之间)。有了MQTT,我可以利用Amazon的代理将完成的测量结果发布给QoS=1的订阅者。我们还假设我唯一的订阅者只是另一台监听通配符主题(例如abc/#)并将发布的消息存储到本地数据库中的设备

但现在也有可能:

the publishing mobile devices have spotty/bad/no connection to the cell network,
the subscriber dies (reboots, software failure, hardware failure, maintenance, etc.)
假设我使用官方的JavaSDK。在这些时间段内发布的数据至少有一个处于脱机状态时会发生什么情况?在重新连接时,订阅者是否会收到其丢失的所有消息

另外:这是否取决于相关协议?出于测试目的,我们使用WebSocket,但在以后的开发/生产中,我们更喜欢MQTT而不是SSL

当至少 他们两个都离线了吗?订阅者是否会收到它发送的所有消息 在重新连接时错过了什么

是的,如果您使用QoS级别为1或更高的MQTT,因为MQTT使用具有主题的发布者/订阅者体系结构。发送到QoS级别为1或更高的主题的消息将由MQTT服务器在内存和磁盘(至少)中保存消息,直到订阅者订阅为止

WebSocket是不同的。它没有发布者/订阅者体系结构。它是单个TCP连接上的双工通信模型。WebSocket作为HTTP连接启动,该连接将更新为WebSocket连接。对于WebSocket,应用程序有责任确保当订阅者出现连接问题时会发生什么情况