Documentation
¶
Index ¶
- Variables
- func Attempts(c Config) int
- func Do(ctx context.Context, fn func(ctx context.Context) error) error
- func DoWithConfig(ctx context.Context, fn func(ctx context.Context) error, opts ...Option) error
- func DoWithRetryConfig(ctx context.Context, fn func(ctx context.Context) error, c Config) error
- func IsMaxRetries(err error) bool
- func IsNoRetry(err error) bool
- type Config
- type DelayFunc
- type OnRetryFunc
- type Option
- type RetryIfFunc
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrMaxRetries 超过最大重试次数。 ErrMaxRetries = errors.New("retry: max retries exceeded") // ErrNoRetry 不再重试(用于 RetryIf 返回 false 时包装最终错误)。 ErrNoRetry = errors.New("retry: no retry") )
错误定义。
Functions ¶
func DoWithConfig ¶
DoWithConfig 执行函数,失败时根据配置自动重试。
func DoWithRetryConfig ¶
DoWithRetryConfig 执行函数,失败时根据指定配置自动重试。
Types ¶
type Config ¶
type Config struct {
// MaxRetries 最大重试次数,默认 3。
// 总执行次数 = MaxRetries + 1(首次执行 + 重试次数)。
MaxRetries int
// Delay 初始重试延迟,默认 100 毫秒。
Delay time.Duration
// MaxDelay 最大重试延迟,默认 10 秒。
// 指数退避时延迟不会超过此值。
MaxDelay time.Duration
// DelayFunc 自定义延迟计算函数。
// 设置后会覆盖默认的延迟策略。
DelayFunc DelayFunc
// RetryIf 自定义重试判定函数。
// 默认所有 error 都重试。
RetryIf RetryIfFunc
// OnRetry 每次重试前的回调函数。
OnRetry OnRetryFunc
// Jitter 是否添加随机抖动,避免惊群效应,默认 false。
// 启用后会在延迟基础上添加 0~50% 的随机时间。
Jitter bool
}
Config 重试配置。
type DelayFunc ¶
DelayFunc 计算重试延迟时间的函数。 attempt 为当前重试次数(从 1 开始),上一次的延迟为 previousDelay。
func ExponentialBackoff ¶
ExponentialBackoff 指数退避延迟。 base 为基础延迟,factor 为乘数因子,attempt 为当前重试次数。
func LinearDelay ¶
LinearDelay 线性增长延迟。 base 为基础延迟,increment 为每次重试的增加量。
type OnRetryFunc ¶
OnRetryFunc 每次重试前的回调函数。 attempt 为当前重试次数(从 1 开始)。
type RetryIfFunc ¶
RetryIfFunc 判断是否需要重试的函数。 返回 true 表示需要重试,false 表示不再重试。
Click to show internal directories.
Click to hide internal directories.