配置 AWS SQS 将运行时异常放入死信队列

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

我正在尝试将异步设计与 API Gateway -> SQS -> Lambda 集成。

网关收到请求,并通过网关上的 SQS 集成,我们将消息传递给 SQS。然后,SQS 将消息传递给 Lambda,最终由 Lambda 执行。

我想处理运行时错误(验证错误、业务错误或运行时异常)。

请建议一种使用死信队列处理此类异常的方法。

如何使用 SQS 作为 DLQ,根据来自服务的 HTTP 状态代码从 Lambda 接收消息(以防运行时失败)?

我尝试将 SQS 配置为 Lambda 异步调用配置内的 DLQ,但即使在出现运行时异常后,消息也不会发送到 SQS-DLQ。

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

传入消息到达 SQS 时,API 网关应将成功响应 (HTTP 202) 发送回请求者。 lambda 函数将从队列中选取消息并开始处理。这将是同步调用。您需要将 DLQ 附加到 SQS 并根据您的要求配置

maxReceiveCount
。标准做法是将
maxReceiveCount
设置为 5。这意味着如果发生故障或异常,lambda 函数将在将消息移动到 DLQ 之前重试 5 次。第 5 次重试后,该消息将自动移至 DLQ。

您可以参考以下链接了解如何配置DLQ。

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html

这是解决方案的直观表示。

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