proretry

package
v0.0.0-...-2d29fd2 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2024 License: MIT Imports: 4 Imported by: 3

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

func Run

func Run(fn RetryFunc, maxRetries int, opts ...RetryOption) error

Run 执行指定的函数,并按照指定的退避算法进行重试。

参数:

  • fn: 待执行的函数。
  • maxRetries: 最大重试次数。
  • opts: 可选的配置选项。

返回值:

  • 执行函数的错误,如果执行成功则返回 nil。

Types

type Backoff

Backoff - 退避算法

func ConstantBackoff

func ConstantBackoff(interval time.Duration) Backoff

ConstantBackoff - 按照指定的重试间隔进行退避。

func ExponentialBackoff

func ExponentialBackoff(initInterval time.Duration) Backoff

ExponentialBackoff - 按照指定的初始重试间隔进行指数退避

func FibonacciBackoff

func FibonacciBackoff(initInterval time.Duration) Backoff

FibonacciBackoff - 按照指定的初始重试间隔进行斐波那契退避

func LinearBackoff

func LinearBackoff(initInterval time.Duration) Backoff

LinearBackoff - 按照指定的初始重试间隔进行线性退避。

type RetryError

type RetryError struct {
	Attempts int
	LastErr  error
}

RetryError 包含重试次数和最后一次错误信息。

func (*RetryError) Error

func (r *RetryError) Error() string

Error 实现 error 接口,返回包含重试次数和最后一次错误信息的字符串。

func (*RetryError) LastError

func (r *RetryError) LastError() error

LastError 返回最后一次错误信息。

type RetryFunc

type RetryFunc delegate.Handler

RetryFunc 是一个函数类型,用于定义需要重试的函数。

type RetryOption

type RetryOption func(*options)

RetryOption 是一个函数类型,用于配置 Run 函数的选项。

func WithBackoff

func WithBackoff(backoff Backoff) RetryOption

WithBackoff 设置退避算法。

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 设置可重试的错误列表。

Jump to

Keyboard shortcuts

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