寻找有关使用 SQS 优化 lambda 重试策略的输入。目前,我有一个由 S3 PUT 操作调用的 Lambda 函数,该函数发布到第三方网络钩子,我正在尝试解决来自所述网络钩子的可能错误/500。我设置了两个 SQS 队列用作重试策略,如下所示:
S3 PUT -> Lambda
Lambda throws error -> Retry twice ->
Move to first SQS queue -> Picked up by second Lambda function for re-processing ->
If re-processing lambda fails, put message back on queue ->
After 5 retries -> move to DLQ for manual evaluation
但是,在重新评估该策略后,我意识到我有两个 lambda 函数在做完全相同的事情(由 S3 PUT 触发的 lambda 和“重新处理”的 lambda,两者都只是点击了 webhook)。我的第二个想法是这样的:
S3 PUT -> SQS Queue ->
Lambda function to process queue message ->
Failed messages go back on queue ->
After X retries move to DLQ
这将消除对执行完全相同的事情的额外 lambda 的需要。是否有任何我没有考虑的可扩展性/成本问题?我能想到的拥有两个 lambda 的唯一好处是并发限制加倍,因为重试将由单独的函数处理。作为参考,这个过程的日吞吐量应该是每天 10-15k 次调用,偏高。