我们能否在订户端维护AWS-IoT中的消息顺序?

时间:2017-10-04 06:54:09

标签: aws-iot

我们使用AWS-IoT服务创建了一个东西。我们在那个特定的事情上创造了一个主题。订阅者已订阅该主题,发布者正在向该主题发送消息。

以下是发布商消息订单:

message 0
message 1
message 2
message 3
message 4 

在订户端,不维护消息序列。它显示如下:

message 0
message 1
message 4
message 2
message 3

3 个答案:

答案 0 :(得分:1)

在AWS IoT中,message broker does not guarantee order确实在它们将消息传递到设备时。

原因是在典型的分布式系统体系结构中,从发布者到订阅者的单个消息应采用多条路径,以确保系统具有高可用性和可伸缩性。对于AWS IoT,设备网关支持发布者订阅者消息传递模式,并支持可扩展,低延迟和低开销的通信。

但是,根据用例的类型,可以解决许多可能的解决方案。应该有一个逻辑使出版商自己来进行协调。一种通用或简单的方法可能是,在设备端添加序列号应足以处理发布者和订阅者之间的消息排序。在接收器上,基于序列号检查顺序进行处理或丢弃的逻辑应该会有所帮助。

答案 1 :(得分:0)

根据documentation of AWS

  

消息代理不保证消息和消息的顺序   收到ACK。

答案 2 :(得分:0)

我想回答这个问题为时已晚,但是我仍然会继续进行,以便其他面临此问题的人可以解决。我遇到了类似的情况,我做了以下操作以确保维持订单状态。

  1. 我将序列ID或时间戳添加到了从我的物联网设备(可以是任何客户端)发送给代理的有效负载中
  2. 然后,我配置了IoT规则引擎(添加操作),以将消息直接发送到DynamoDB,在该数据库中,数据以排序方式自动存储(需要配置为按seqID排序)。
  3. 然后,我使用Lambda从DynamoDB中提取数据以用于进一步的工作流,但是您可以根据自己的需要使用任何服务。