【问题标题】:Error when sending data from AWS IoT to SQS FiFo将数据从 AWS IoT 发送到 SQS FiFo 时出错
【发布时间】:2022-01-21 14:56:36
【问题描述】:

我有将数据发送到 AWS IoT Core 的 IoT 设备,并且从那里我创建了一个将数据(JSON 格式)转发到 SQS 的规则,我在其中设置了 FiFo 队列。我在以下细节上失败了:

    "details": "The request must contain the parameter MessageGroupId. 
    (Service: AmazonSQS; Status Code: 400; Error Code: MissingParameter; 
     Request ID: 67c63eb5-d2b5-5d3e-8ffa-68cf304356de)"

看起来我需要包含 MessageGroupID 参数,但如果我的 IoT 设备没有发送该信息,我该怎么做?有没有办法在不更新物联网设备上运行的软件的情况下添加该参数?

【问题讨论】:

    标签: amazon-web-services amazon-sqs aws-iot


    【解决方案1】:

    我了解到,当消息到达 IoT Cloud 时,您正尝试使用 IoT 规则 SQL 重新发布到 SQS FIFO 队列。

    首先,让我们了解一下为什么 AWS 需要发送 MessageGroupID

    您需要在您(重新)发布到 SQS 中的 FIFO 队列的每条消息中指定 MessageGroupID。
    这是出于在下游消息处理期间进行分组的原因。

    因此,您可以指定:

    1. 一个硬编码文字,如“MY_MESSAGE_GROUP_ID”,用于所有重新发布的消息的 MessageGroupId,让一个且只有一个下游进程订阅这些消息。

    2. 随机化 UUID 到 MessageGroupId,使用 AWS IoT 规则 here 中的 newuuid() 函数。这将创造机会让多个下游进程并行订阅消息。

    在这两种情况下,都将遵守消息 FIFO 顺序。

    干杯,
    内存

    【讨论】:

      【解决方案2】:

      基于你想要达到的假设来回答

      • 在 IoT Core 中创建操作规则
      • 将您的消息转发到 SQS FIFO 队列

      根据 AWS SQS documentation,不支持 FIFO 队列作为 IoT Core 操作的端点:

      SQS 操作不支持 Amazon SQS FIFO(先进先出)队列。因为规则引擎是一个完全分布式的服务,所以在触发 SQS 动作时不能保证消息的顺序。

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-18
        • 2020-11-02
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多