需要了解step函数重试机制

问题描述

也许这可以很快得到回答。 我正在努力在步骤函数添加重试机制。我想每隔 1 小时左右重试失败的活动 24 小时。

在这里详细介绍了“发生错误后重试”部分: https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html 它说“每次尝试期间重试间隔增加的乘数(认为 2.0)。” 还给出了 3 秒后第一次重试和 4.5 秒后下一次重试的示例,因为 BackoffRate 为 1.5。

这不是指数退避吗? 因为,在同一页面上,在“使用重试处理失败”部分下,它表示将按指数方式应用退避。

解决方法

重试间隔的工作原理如下:

间隔 = IntervalSeconds*(BackoffRate)^(attempt-1)

所以对于这个配置:

      "Retry": [
        {
          "ErrorEquals": ["States.ALL"],"BackoffRate": 2,"IntervalSeconds": 6,"MaxAttempts": 6
        }
      ]

我们有这些间隔:

attempt.      interval
---------------------------
1             6*(2^0)  =  6
2             6*(2^1)  =  12
3             6*(2^2)  =  24