我们的请求当前受外部API的速率限制,因此我们想开发一种重试机制。
为此,我们决定使用连接到Lambda函数(调用外部API)的SQS(对所有请求进行排队)。按照默认设置,3次Lambda函数重试看起来不错,但是有什么办法可以安排X秒后进行这些重试(因为外部API在我们可以重试多少秒后返回)?
对于即使在3次重试后仍然失败的请求,我们决定使用DLQ(死信队列)并在非高峰时间处理这些请求。那么最好的方法是什么?我们目前正在考虑通过Scheduled Events Cron触发另一个仅连接到DLQ的消费者。
如果DLQ中的请求失败怎么办?我们仍然要处理这些。
谢谢
答案 0 :(得分:0)
我实际上有一个解决方法。如果发生故障,我可以从SQS删除消息,然后重新添加相同的消息,其初始隐身期等于重试时间(从外部API获取)。这样,我可以根据自己的需要建立自己的重试机制(SQS和DLQ)。
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-timers.html