【问题标题】:Reprocess AWS SQS Dead Letter Queue messages重新处理 AWS SQS 死信队列消息
【发布时间】:2020-02-14 14:13:29
【问题描述】:

我正在使用 aws sdk 将我的 lambda 中失败的消息发送到死信队列。我想等待几个小时,然后再将消息发送回主队列进行重新处理。我有一个 lambda 附加到我的死信队列。我可以使用延迟将消息发送到死信队列。但最大延迟为 15 分钟。但我想等待更多的时间。以前有人做过吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sqs


    【解决方案1】:

    Amazon SQS 不打算以这种方式使用。它的主要目的是存储消息,然后在请求时将其返回。

    其他一些选项:

    • 将消息存储在数据库中,并让应用程序根据时间戳字段搜索相关消息,
    • 在 AWS Step Functions(具有延迟功能)上做一些棘手的事情

    【讨论】:

    • 我正在探索这两个选项。谢谢。
    • 目前,我已经实现了 db 方法。我将失败的消息存储在 dynamodb 中,并在由 cloudwatch 事件触发的 lambda 函数中重新处理它们。我很想在以后探索 Step Functions 方法。谢谢。
    【解决方案2】:

    this answer 所示,您可以延长延迟,方法是为每条消息提供一个时间戳,并只处理现在排队一段时间的消息。

    message = SQS.poll_messages
    if message.perform_message_at > Time.now
       SQS.push_to_queue({perform_message_at : "Thursday November 
       2022"},delay:15 mins)
    else
       process_message(message)
    end
    

    【讨论】:

    • 引用的答案看起来不是一个特别好的主意。它正在从队列中检索消息,然后如果它太“早”,则发回一条新消息。这是很多开销,如果出现问题,可能会丢失消息。
    • @JohnRotenstein 是的,它涉及一些开销
    猜你喜欢
    • 2018-10-25
    • 2022-07-22
    • 2021-03-16
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    相关资源
    最近更新 更多