【问题标题】:Should I add a dead letter queue and/or message group ID to my AWS SQS FIFO queue?我应该将死信队列和/或消息组 ID 添加到我的 AWS SQS FIFO 队列吗?
【发布时间】:2021-10-27 18:53:05
【问题描述】:

我有一个 AWS SQS FIFO 队列来处理传入的消息序列。理想情况下,我的消费者(一个 Lambda)将按节奏检索有序消息并尝试重新处理它们。我的问题是我是否应该添加死信队列?

  • 我想按顺序处理 SQS 上的消息,如果未处理,消息组中的第一条消息似乎会阻塞该组中的所有其他消息。
  • 我目前将消息组 ID 都设置为相同的东西,尽管有些消息并不真正依赖于订单

当前设置{ 1st, group A } { 2nd, group A } { 3rd, group A }

我是否应该将消息组 ID 设置为 { 1st, group A } { 2nd, group A } { 3rd, group B } 以便即使第 1 条消息处理失败也可以处理第 3 条消息?

我是否应该进一步设置死信队列,以便有另一个队列搁置在几次尝试后无法正确处理的消息,这样它就不会占用我的飞行消息限制?

【问题讨论】:

    标签: amazon-web-services message-queue amazon-sqs


    【解决方案1】:

    您应该将相同的MessageGroupID 分配给必须严格按照彼此相对顺序进行处理的任何消息。

    如果您有不依赖于其他消息的消息,那么它们应该有不同的MessageGroupID

    我想举的例子是发送 GPS 坐标的公共汽车车队。需要处理特定总线的所有位置以便在地图上正确显示它,但来自不同总线的消息可以按任何顺序处理。因此,每条总线都应该有自己的MessageGroupID

    【讨论】:

    • 是的,这完全有道理。有死信队列怎么办?死信队列和MessageGroupId 不是更完整的解决方案吗?
    • 如果 Lambda 函数在给定次数的重试后无法处理消息,那么它将把消息移动到死信队列(而不是丢弃它)。该决定与消息处理顺序无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2022-07-28
    • 2021-05-01
    • 2019-11-07
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多