活动重试

Temporal 对活动默认启用重试,使用指数退避策略。你可以覆盖默认值, 为不同活动配置独立的重试行为。

重试策略示例(Go)

ActivityOptions.goGo
ao := workflow.ActivityOptions{
    StartToCloseTimeout: 30 * time.Second,
    RetryPolicy: &temporal.RetryPolicy{
        InitialInterval:    time.Second,
        BackoffCoefficient: 2.0,
        MaximumInterval:    100 * time.Second,
        MaximumAttempts:    5,
        NonRetryableErrorTypes: []string{"BadRequest"},
    },
}
ctx = workflow.WithActivityOptions(ctx, ao)

关键点

  • 活动默认会重试;工作流默认不重试。
  • 重试间隔遵循指数退避,并受 `MaximumInterval` 与 `MaximumAttempts` 约束。
  • 对确定不会成功的错误,尽量标记为 non-retryable,避免无效重试。
常见误区
不建议在 Activity 函数内部再做复杂重试循环,这会放大超时预算并降低 Temporal UI 的可观测性。

官方参考