gpt4 book ai didi

amazon-web-services - AWS SQS 死信队列通知

转载 作者:行者123 更新时间:2023-12-05 00:10:55 26 4
gpt4 key购买 nike

我正在尝试设计一个基于 SQS、Lambda 和 SNS 的小型消息处理系统。如果失败,我希望将消息排入死信队列 (DLQ) 并调用 webhook。

我想知道实现这一目标的最规范或最合理的方式是什么。

目前,如果一切顺利,流程应该如下:

  • SQS(用于处理重试)将消息排入队列
  • Lambda 被 SQS 调用并处理消息
  • Lambda 发送 webhook 并正常完成

  • 如果 lambda 中出现问题(无法调用成功的 webhook,无法处理手头的任务),实现我想要的最简单的方法似乎是设置一个 DLQ1,SQS 会将失败的消息放入。辅助 lambda然后将被调用以处理此消息,将其传递给 SNS,后者将调用失败的 webhook,并将消息转发到 DLQ2,即最终/真正的 DLQ。

    这是最好的方法吗?

    我知道的另一种选择是 Alarms ,尽管我被警告说它们非常棘手。另一种方法是,如果上次重试失败,则让 lambda 调用错误报告 webhook,尽管这似乎不合适。

    谢谢!

    最佳答案

    您的架构在成功的情况下看起来足够好,但我个人觉得如果出现任何问题会令人困惑,因为我不明白为什么您需要两个 DLQ 来开始。

    如果失败,我会这样做:

  • 在源 SQS 队列上定义一个 DLQ 并将 maxReceiveCount 设置为 3,这意味着如果消息失败三次,它们将被重定向到配置的 DLQ
  • 创建一个监听此 DLQ 的 Lambda。
  • 在这个 Lambda 中执行 webhook。
  • 由于第 3 步会在处理完消息后自动从队列中删除消息,并且显然您希望将消息保留在某处,因此将消息内容存储在 S3 上的文件中,并将文件元数据(存储桶和 key )存储在DynamoDB 中的一个表,因此您始终可以查询失败的消息。

  • 除非您希望给定消息有多个订阅者,否则我在这里看不到 SNS 的任何作用,但正如我所见,情况并非如此。

    这样,您只需要维护一个 DLQ,您就可以摆脱 SNS,因为它只会为您的架构增加一层额外的复杂性。

    关于amazon-web-services - AWS SQS 死信队列通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55687170/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com