amazon-web-services - 使用 SQS 和 DLQ 时是否应该禁用 lambda 重试?

标签 amazon-web-services aws-lambda amazon-sqs

我在 AWS 上部署了 lambda、SQS 标准队列和死信队列。我在队列中配置了 maxReceiveCount 以在将事件放入 DLQ 之前重试。 Lambda 从 SQS 队列中批量拉取事件并依次处理每个事件。我的问题是关于 retry 在出现错误时如何工作。有两次重试,一次是在lambda maximumRetryAttempts上,一次是在SQS和DLQ上。我应该禁用 lambda 吗?

在函数中,当它处理一个事件时,它调用 sqs 上的 deleteMessage 来删除它。如果有任何事件抛出异常,该函数会将其抛给 lambda 以进行重试,这样它就不会重试成功事件。

但是 lambda 本身有一个 maximumRetryAttempts,我应该将它设置为 0 吗?否则,它会在返回 SQS 之前重试吗?如果我不禁用它,是否会重试处理包括成功事件在内的整批事件?

最佳答案

不确定您指的是 lambda 上的哪个 maximumRetryAttempts。但是当您通过 event source mapping 将 SQS 与 Lambda 结合使用时,默认情况下,lambda 上没有任何重试参数

唯一适用的重试设置为 SQS,而不是 lambda。

我能想到的 lambda 的重试选项,也许你也在精简,适用于 asynchronous invocation .这不适用于 SQS,因为您的 lambda 是与 SQS 同步调用的:

Lambda polls the queue and invokes your Lambda function synchronously with an event that contains queue messages.

关于amazon-web-services - 使用 SQS 和 DLQ 时是否应该禁用 lambda 重试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67101613/

相关文章:

amazon-web-services - Amazon lambda nodejs elasticache 在 redis 中存储数据

node.js - 使用 POST API 时出现多个 CORS 错误

amazon-web-services - 具有交付延迟的 Amazon SQS 基于内容的重复数据删除?

amazon-web-services - 为什么我应该在AWS的ElastiCache上使用简单队列服务(SQS)

python - 我有一个 AWS 访问 key ,我已经创建了一个 SQS 队列,但仍然无法使用 python boto 访问 SQS

amazon-web-services - Locust.io : Controlling the request per second parameter

amazon-web-services - AWS CloudFormation导出yaml文件

amazon-web-services - 找出与 Elastic Beanstalk 应用程序关联的 EC2 实例?

amazon-web-services - 从 AWS Control Tower 中删除注册账户

node.js - AWS Step/Lambda - 在运行之间存储变量