首页 > 解决方案 > 如何在非高峰时段处理 DLQ 消息

问题描述

我们的请求目前受到外部 API 的速率限制,因此我们想开发一种重试机制。

为此,我们决定使用连接到 Lambda 函数(调用外部 API)的 SQS(对所有请求进行排队)。根据默认值,3 次 Lambda 函数重试看起来不错,但有什么方法可以安排 X 秒后的重试(因为外部 API 在我们可以重试多少秒后返回)?

对于重试 3 次仍失败的请求,我们决定使用 DLQ(死信队列)并在非高峰时段处理这些请求。那么最好的方法是什么?我们目前正在考虑启动另一个仅连接到 DLQ 的消费者,通过 Scheduled Events Cron 触发。

如果 DLQ 中的请求失败了怎么办?我们仍然想处理这些。

谢谢

标签: amazon-web-servicesaws-lambdaamazon-sqs

解决方案


我实际上有一个解决方法。如果失败,我可以从 SQS 中删除消息,然后重新添加相同的消息,初始不可见期等于重试时间(从外部 API 获取)。这样我就可以根据自己的需要建立自己的重试机制(SQS和DLQ)。

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-timers.html


推荐阅读