通过事件源映射进行 SQS LAMBDA 集成

问题描述 投票:0回答:1

我们假设以下场景:

我通过事件源映射集成了 Lambda 和 SQS。通过以下设置:

  • 可见性超时 -> 60 秒
  • 批量大小 -> 10

我在 lambda 函数中收到了一个包含 10 条消息的事件,我将开始使用线程并行处理它。 10 条消息中的 8 条已成功处理并删除,两条消息处理失败,并且针对此失败创建了处理程序,而没有“爆炸”lambda 函数。所有这一切都发生在可见性超时到期之前。

很快。 lambda 函数将毫无错误地响应。并且整个批次将被删除。但实际上应该有两条消息返回队列。

遇到这种情况该如何处理?

将消息重新发送到队列。但我不认为解决问题的最好方法

amazon-web-services aws-lambda amazon-sqs
1个回答
0
投票

首先,如果您使用 SQS 事件源映射,则不应在 Lambda 函数代码中从队列中删除 SQS 消息。您应该让 Lambda 函数返回成功或错误消息,并且根据该消息,Lambda 服务将认为消息已处理,并从队列中删除消息,或者将消息返回到队列以进行处理。再次处理。

在您的场景中,您成功处理 8 条消息,但未能处理 2 条消息,您的 Lambda 函数应实现部分批量响应,这使其能够准确通知 Lambda 服务哪些消息已成功处理,哪些消息未成功处理。 Lambda 服务将使用该信息从队列中删除成功的消息,并且仅将失败的消息重新排队。

© www.soinside.com 2019 - 2024. All rights reserved.