amazon-web-services - 如何在非高峰时段处理 DLQ 消息
问题描述
我们的请求目前受到外部 API 的速率限制,因此我们想开发一种重试机制。
为此,我们决定使用连接到 Lambda 函数(调用外部 API)的 SQS(对所有请求进行排队)。根据默认值,3 次 Lambda 函数重试看起来不错,但有什么方法可以安排 X 秒后的重试(因为外部 API 在我们可以重试多少秒后返回)?
对于重试 3 次仍失败的请求,我们决定使用 DLQ(死信队列)并在非高峰时段处理这些请求。那么最好的方法是什么?我们目前正在考虑启动另一个仅连接到 DLQ 的消费者,通过 Scheduled Events Cron 触发。
如果 DLQ 中的请求失败了怎么办?我们仍然想处理这些。
谢谢
解决方案
我实际上有一个解决方法。如果失败,我可以从 SQS 中删除消息,然后重新添加相同的消息,初始不可见期等于重试时间(从外部 API 获取)。这样我就可以根据自己的需要建立自己的重试机制(SQS和DLQ)。
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-timers.html
推荐阅读
- google-cloud-functions - 是否可以将多个存储桶作为谷歌云功能的 --trigger-resource 包含在内?
- testing - Testcafe:如何最大化窗口?
- sql-server - 在 SQL Server 中检索连接的行
- javascript - Jquery函数每5秒更改一次背景图像不起作用
- excel - VBA,删除行/列值作为增量函数
- python - 用于通过前向和后向替换从 LU 分解求解系统的 Python 代码
- mongodb - 主节点崩溃后,MongoDB 3.4.23 featureCompatibilityVersion 设置为 3.2
- android - Appium可以在几个通过wifi连接的真实Android设备上运行一些测试吗
- python - 退出python程序时我的线程被杀死了吗?如果没有怎么办?
- firebase - Firebase crashlytics 未记录所有崩溃