【问题标题】:Cant figure out Lambda retries无法弄清楚 Lambda 重试
【发布时间】:2021-08-17 14:19:52
【问题描述】:

由于某种原因,我根本无法在我的 lambda 函数中复制文档中所述的重试功能。我将最大事件年龄设置为 1 分钟,并将最大重试次数设置为 2。然而,当执行如下所示的简单 lambda 函数时:

if(StringUtils.contains("ERROR_MESSAGE", payload)){
throw new RuntimeException("Example error message");
}

它会重试很多次。可能超过 50 次。有没有办法模仿重试功能?为什么要重试这么多次?

另外, 使用状态机(步进函数)重试时,它的工作方式与使用正常重试相同吗?如果我的 lambda 是由某个事件源触发的,例如 MSK,如果 lambda 函数失败或抛出异常,是否会遵循 Step Function 中指定的重试场景?

【问题讨论】:

  • 这个测试函数是如何被调用的?我认为一些不同的调用方法(例如被 SQS 触发器调用)有不同的重试规则。
  • MSK 触发器。是否有关于 MSK 触发器的重试规则的文档?因为我根本找不到它
  • docs.aws.amazon.com/lambda/latest/dg/with-msk.html "Lambda 按顺序读取每个分区的消息。在 Lambda 处理完每个批次后,它会提交该批次中消息的偏移量。如果您的函数对其中的任何消息返回错误一批,Lambda 重试整批消息,直到处理成功或消息过期。”

标签: amazon-web-services error-handling aws-lambda retry-logic


【解决方案1】:

谢谢马克!

docs.aws.amazon.com/lambda/latest/dg/with-msk.html “Lambda 按顺序读取每个分区的消息。在 Lambda 处理每个批次后,它会提交该批次中消息的偏移量。如果您的函数会为批处理中的任何消息返回错误,Lambda 会重试整批消息,直到处理成功或消息过期。”

【讨论】:

    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多