我正在设计一个基于SQS、Lambda和SNS的小型消息处理系统。在失败的情况下,我希望将消息排入死信队列(DLQ)并调用Webhook。
我想知道实现这个目标最典型或合理的方式是什么。
目前,如果一切顺利,流程应该如下:
- SQS(用于处理重试)将消息排队
- Lambda由SQS调用并处理消息
- Lambda发送Webhook并正常完成
如果Lambda中出现问题(无法调用成功的Webhook,无法处理任务),实现我想要的最简单方法似乎是设置DLQ1,让SQS将失败的消息放入其中。然后会调用一个辅助lambda来处理此消息,将其传递给SNS,SNS将调用失败Webhook,并将消息转发到DLQ2,最终/真正的DLQ。
那是最好的方案吗?
我知道的一个替代方案是Alarms,但我被警告说它们相当棘手。另一个方案是,如果最后一次重试失败,让lambda调用错误报告webhook,尽管这似乎不太合适。谢谢!