我正在尝试设计一个基于SQS,Lambda和SNS的小型消息处理系统。如果失败,我希望将消息排入死信队列(DLQ)并调用webhook。
我想知道实现这种情况的最规范或合理的方式是什么。
目前,如果一切顺利,过程应如下:
如果lambda中的某些内容出错(无法调用成功webhook,无法处理任务),实现我想要的最简单方法似乎是设置一个SQS将失败消息放入的DLQ1。辅助lambda然后将被调用来处理此消息,将其传递给SNS,后者将调用失败webhook,并将消息转发给DLQ2,即最终/真实DLQ。
这是最好的方法吗?
我知道的一个替代方案是Alarms,尽管我已经被警告说它们非常棘手。另一个是如果上次重试失败,则lambda会调用错误报告webhook,尽管这似乎不合适。
谢谢!
在成功的情况下,您的架构看起来很好,但我个人觉得如果出现任何问题会让人感到困惑,因为我不明白为什么您需要两个DLQ才能开始。
这是我在失败时会做的事情:
我没有在这里看到SNS的任何角色,除非您想要给定消息的多个订阅者,但我认为情况并非如此。
这样,您只需要维护一个DLQ,就可以摆脱SNS,因为它只会给您的架构增加额外的复杂性。