README ¶
ProRetry
ProRetry 提供了多种退避算法和可配置的重试机制。
特性
- 多种退避算法:常数、线性、指数和斐波那契
- 灵活的重试机制
- 可配置的初始重试间隔和退避策略
- 支持自定义错误处理和可重试错误判定
- 清晰的错误处理,包括重试次数和最后一次错误
使用方法
基本用法
import (
"github.com/khicago/got/util/proretry"
)
func main() {
err := proretry.Run(
func() error {
// 你的函数逻辑
return nil
},
3, // 最大重试次数
)
if err != nil {
// 处理错误
}
}
自定义退避策略
err := proretry.Run(
yourFunction,
5,
proretry.WithBackoff(proretry.ExponentialBackoff(100 * time.Millisecond)),
)
自定义可重试错误
err := proretry.Run(
yourFunction,
3,
proretry.WithRetryableErrs(ErrTemporary, ErrTimeout),
)
使用自定义错误判定函数
err := proretry.Run(
yourFunction,
3,
proretry.WithRetryableErrFunc(func(err error) bool {
return err != nil && err.Error() == "temporary error"
}),
)
API 参考
退避算法
ConstantBackoff(interval time.Duration) Backoff
LinearBackoff(initInterval time.Duration) Backoff
ExponentialBackoff(initInterval time.Duration) Backoff
FibonacciBackoff(initInterval time.Duration) Backoff
重试选项
WithInitInterval(interval time.Duration) RetryOption
WithRetryableErrs(errs ...error) RetryOption
WithRetryableErrFunc(f func(error) bool) RetryOption
WithBackoff(backoff Backoff) RetryOption
主要函数
Run(fn RetryFunc, maxRetries int, opts ...RetryOption) error
Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultRetryInterval = 80 * time.Millisecond
DefaultRetryInterval 是默认的重试间隔时间。
Functions ¶
Types ¶
type Backoff ¶
Backoff - 退避算法
func ConstantBackoff ¶
ConstantBackoff - 按照指定的重试间隔进行退避。
func ExponentialBackoff ¶
ExponentialBackoff - 按照指定的初始重试间隔进行指数退避
func FibonacciBackoff ¶
FibonacciBackoff - 按照指定的初始重试间隔进行斐波那契退避
func LinearBackoff ¶
LinearBackoff - 按照指定的初始重试间隔进行线性退避。
type RetryError ¶
RetryError 包含重试次数和最后一次错误信息。
func (*RetryError) Error ¶
func (r *RetryError) Error() string
Error 实现 error 接口,返回包含重试次数和最后一次错误信息的字符串。
type RetryOption ¶
type RetryOption func(*options)
RetryOption 是一个函数类型,用于配置 Run 函数的选项。
func WithInitInterval ¶
func WithInitInterval(interval time.Duration) RetryOption
WithInitInterval 设置初始重试间隔时间。
func WithRetryableErrFunc ¶
func WithRetryableErrFunc(f func(error) bool) RetryOption
WithRetryableErrFunc 设置可重试错误的判定函数。
func WithRetryableErrs ¶
func WithRetryableErrs(errs ...error) RetryOption
WithRetryableErrs 设置可重试的错误列表。
Click to show internal directories.
Click to hide internal directories.