retry

package
v0.0.0-...-86bfb0a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 30, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

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 Attempts

func Attempts(c Config) int

Attempts 返回重试配置中的总执行次数(首次 + 重试)。

func Do

func Do(ctx context.Context, fn func(ctx context.Context) error) error

Do 执行函数,失败时根据配置自动重试。 使用默认配置。

func DoWithConfig

func DoWithConfig(ctx context.Context, fn func(ctx context.Context) error, opts ...Option) error

DoWithConfig 执行函数,失败时根据配置自动重试。

func DoWithRetryConfig

func DoWithRetryConfig(ctx context.Context, fn func(ctx context.Context) error, c Config) error

DoWithRetryConfig 执行函数,失败时根据指定配置自动重试。

func IsMaxRetries

func IsMaxRetries(err error) bool

IsMaxRetries 判断错误是否为超过最大重试次数。

func IsNoRetry

func IsNoRetry(err error) bool

IsNoRetry 判断错误是否为不再重试。

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

type DelayFunc func(attempt int, previousDelay time.Duration) time.Duration

DelayFunc 计算重试延迟时间的函数。 attempt 为当前重试次数(从 1 开始),上一次的延迟为 previousDelay。

func ExponentialBackoff

func ExponentialBackoff(base time.Duration, factor float64) DelayFunc

ExponentialBackoff 指数退避延迟。 base 为基础延迟,factor 为乘数因子,attempt 为当前重试次数。

func FixedDelay

func FixedDelay(delay time.Duration) DelayFunc

FixedDelay 固定延迟。

func LinearDelay

func LinearDelay(base, increment time.Duration) DelayFunc

LinearDelay 线性增长延迟。 base 为基础延迟,increment 为每次重试的增加量。

type OnRetryFunc

type OnRetryFunc func(attempt int, err error)

OnRetryFunc 每次重试前的回调函数。 attempt 为当前重试次数(从 1 开始)。

type Option

type Option func(*Config)

Option 配置选项。

func WithDelay

func WithDelay(delay time.Duration) Option

WithDelay 设置初始重试延迟。

func WithDelayFunc

func WithDelayFunc(fn DelayFunc) Option

WithDelayFunc 设置自定义延迟计算函数。

func WithJitter

func WithJitter() Option

WithJitter 启用随机抖动。

func WithMaxDelay

func WithMaxDelay(maxDelay time.Duration) Option

WithMaxDelay 设置最大重试延迟。

func WithMaxRetries

func WithMaxRetries(max int) Option

WithMaxRetries 设置最大重试次数。

func WithOnRetry

func WithOnRetry(fn OnRetryFunc) Option

WithOnRetry 设置每次重试前的回调函数。

func WithRetryIf

func WithRetryIf(fn RetryIfFunc) Option

WithRetryIf 设置自定义重试判定函数。

type RetryIfFunc

type RetryIfFunc func(error) bool

RetryIfFunc 判断是否需要重试的函数。 返回 true 表示需要重试,false 表示不再重试。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL