【问题标题】:Making SQS message visible again using partial batch response使用部分批处理响应使 SQS 消息再次可见
【发布时间】:2022-11-03 09:36:45
【问题描述】:

假设:

  • 有 AWS Lambda 处理来自 AWS SQS FIFO 队列的 10 个元素批次的消息,具有 25 个可用消息组 ID(以随机方式分配)
  • 单个消息的处理大约需要 30-60 秒
  • SQS 消息可见性超时设置为 10 分钟
  • 集成触发器 Lambda-SQS 已启用“部分批处理响应”

当 Lambda 返回带有失败消息 ID 的部分批处理响应时,例如:

{
    "batchItemFailures": [
        {
            "itemIdentifier": "d4c7c57f-c12c-4639-abe3-3a0d37690790"
        }
    ]
}

成功处理的消息将从队列中删除。 但是,批处理中的失败消息仍在等待可见性超时,而不是立即对消费者可见。失败消息的行为是否正确?或者让它们立即可见的唯一方法是调用 SQS API 并将可见性超时更改为 0?

【问题讨论】:

    标签: amazon-web-services aws-lambda batch-processing amazon-sqs aws-sqs-fifo


    【解决方案1】:

    虽然我不能说 FIFO SQS 队列,但我可以说我在标准 SQS 队列中看到了这种行为。

    我假设在 batchItemFailures 中返回的项目将立即设置为可见,但它们确实似乎一直在飞行,直到它们的 VisibilityTimeout 到期。

    我的解决方案是在返回 batchItemFailures 之前通过 SQS API 手动将消息可见性超时更改为 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      相关资源
      最近更新 更多