活动重试
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 的可观测性。