我正在考虑使用AWS IoT核心作为各种类型设备的数据入口。数据完整性是我们旧的入口管道不可打破的规则之一。当设备将数据发送到后端时,数据不会丢失(在我们进入接收数据的设备之前,它会被写入永久存储)。
在MQTT中,情况似乎有点不同。根据我到目前为止所读到的,如果设备写入MQTT主题,它可以选择将QoS设置为0(最多一次)或1(至少一次),当然,为了保证交付,我们将选择QoS 1。
然而,据我所知,这并不能保证主题上有任何订阅者来获取消息。如果设备向没有订阅者的主题发送消息,则消息将丢失。MQTT有一个保留消息的概念( AWS在大约一年前就支持它),但是这只保留了最新的消息,所以如果一个设备向一个未订阅的主题发送两条消息,那么第一条消息就会丢失。
因此,现在我的实际问题(终于)。AWS IoT有可以附加到MQTT主题的“规则”。但是,我没有发现任何关于AWS IoT所提供的保证的信息,即这些规则将始终监视创建它们的主题。有谁能告诉我,是否有一个100%的保证,一个消息发送到一个MQTT主题,有一个规则分配给它永远不会丢失?我的意思是,我需要该规则来完成处理,并成功地执行在其上定义的操作或成功地执行在其上定义的错误操作(这将只是将消息写入DLQ,即SQS或S3桶)。
发布于 2022-10-12 12:26:49
我个人从未听说过AWS IoT规则造成的数据丢失。
这只是一个简单的消息转发。我有一个项目,在这个项目中,我们必须用这些规则每秒向其他服务转发大约数千条消息。我们有一些数据丢失,但不是规则造成的,但是:
rejected)
最后,我们遇到了一些IoT核心的问题,包括格林格拉斯,我们切换到了动态数据流和动态交付流,在那里我们有了更多的控制。边缘设备配置为重试,以防止摄入失败,而且我们没有达到配额自动标度选项。也没有收到任何副本。
请记住,这只是我的项目经验,您的情况可能非常不同,IoT规则实际上可能是一种有效的方法。
https://stackoverflow.com/questions/74041225
复制相似问题