Documentation
¶
Overview ¶
本包提供了通用的重试机制,支持带上下文和不带上下文的函数重试。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Retry ¶
func Retry(fn RetryableFunc, opts ...BackoffOption) error
Retry 对传入的 RetryableFunc 类型函数进行重试。
参数:
- fn RetryableFunc:需要重试的函数,签名为 func() error。
返回值:
- error:如果所有重试均失败,则返回最后一次的错误;否则返回 nil。
当前实现仅为占位,实际重试逻辑需后续补充。
func RetryWithContext ¶
func RetryWithContext(ctx context.Context, fn RetryableFuncWithContext, opts ...BackoffOption) error
RetryWithContext 对传入的带上下文的 RetryableFuncWithContext 类型函数进行重试。 支持通过 context.Context 控制重试过程,如取消或超时。
参数:
- ctx context.Context:上下文对象,用于控制重试过程的取消与超时。
- fn RetryableFuncWithContext:需要重试的函数,签名为 func(ctx context.Context) error。
返回值:
- error:如果所有重试均失败,则返回最后一次的错误;否则返回 nil。
当前实现仅为占位,实际重试逻辑需后续补充。
Types ¶
type Backoff ¶
type Backoff struct {
// contains filtered or unexported fields
}
Backoff 结构体用于实现带有指数退避和可选抖动机制的重试等待时间生成器。 支持设置最小、最大等待时间、增长因子等参数。 注意:Backoff 结构体本身不是并发安全的,但 ForAttempt 方法是并发安全的。
func NewBackoff ¶
func NewBackoff(opts ...BackoffOption) *Backoff
NewBackoff 创建一个新的 Backoff 实例,并应用所有给定的选项。 参数:
- opts ...BackoffOption:可选参数,用于配置 Backoff。
返回值:
- *Backoff:新建的 Backoff 实例。
func (*Backoff) Attempt ¶
Attempt 返回当前的尝试次数。 返回值为 float64 类型,便于与 ForAttempt 方法配合使用。
返回值:
- float64:当前的尝试次数。
func (*Backoff) Copy ¶
Copy 返回一个与当前 Backoff 实例参数相同的新实例。 新实例不会复制尝试次数,只复制参数配置。
返回值:
- *Backoff:新建的 Backoff 实例,参数与当前实例一致。
func (*Backoff) Duration ¶
Duration 返回当前尝试次数对应的等待时间,并将尝试次数加一。 本方法不是并发安全的,若需并发安全请使用 ForAttempt 方法。
返回值:
- time.Duration:当前尝试次数对应的等待时间。
func (*Backoff) ForAttempt ¶
ForAttempt 根据指定的尝试次数计算对应的等待时间。 该方法是并发安全的,适用于多个独立 Backoff 实例共享参数的场景。
参数:
- attempt float64:尝试次数,从 0 开始,表示第 0 次尝试。
返回值:
- time.Duration:指定尝试次数对应的等待时间。
type BackoffOption ¶
type BackoffOption func(*Backoff)
BackoffOption 类型用于配置 Backoff 实例的参数。 每个选项函数会修改 Backoff 的一个或多个字段。
func WithFactor ¶
func WithFactor(factor float64) BackoffOption
WithFactor 设置 Backoff 的增长因子。 参数:
- factor float64:每次递增时的乘数因子。
返回值:
- BackoffOption:用于设置 factor 字段的选项函数。
func WithJitter ¶
func WithJitter(jitter bool) BackoffOption
WithJitter 设置 Backoff 是否启用抖动机制。 参数:
- jitter bool:是否启用抖动。
返回值:
- BackoffOption:用于设置 jitter 字段的选项函数。
func WithMax ¶
func WithMax(max time.Duration) BackoffOption
WithMax 设置 Backoff 的最大等待时间。 参数:
- max time.Duration:最大等待时间。
返回值:
- BackoffOption:用于设置 max 字段的选项函数。
func WithMin ¶
func WithMin(min time.Duration) BackoffOption
WithMin 设置 Backoff 的最小等待时间。 参数:
- min time.Duration:最小等待时间。
返回值:
- BackoffOption:用于设置 min 字段的选项函数。
type RetryableFunc ¶
type RetryableFunc func() error
RetryableFunc 定义了可重试的函数类型。
签名:
- func() error
参数:
- 无参数。
返回值:
- error:执行过程中发生的错误。
type RetryableFuncWithContext ¶
RetryableFuncWithContext 定义了带上下文的可重试函数类型。
签名:
- func(ctx context.Context) error
参数:
- ctx context.Context:上下文对象,用于控制取消、超时等。
返回值:
- error:执行过程中发生的错误。