mirror of https://github.com/gofiber/fiber.git
* ci: explicitly disable tagalign Tagalign requires awkward manual formatting and doesn't provide much value for readability. * ci: enable mirror linter mirror warns against certain cases of useless conversion between string and []byte. * ci: enable perfsprint linter This linter encourages replacing several functions from the fmt package with faster alternatives. While fixing issues, I also added a few exported error types rather than returning a naked errors.New(). |
||
---|---|---|
.. | ||
README.md | ||
config.go | ||
exponential_backoff.go | ||
exponential_backoff_test.go |
README.md
Retry Addon
Retry addon for Fiber designed to apply retry mechanism for unsuccessful network operations. This addon uses exponential backoff algorithm with jitter. It calls the function multiple times and tries to make it successful. If all calls are failed, then, it returns error. It adds a jitter at each retry step because adding a jitter is a way to break synchronization across the client and avoid collision.
Table of Contents
Signatures
func NewExponentialBackoff(config ...Config) *ExponentialBackoff
Examples
Firstly, import the addon from Fiber,
import (
"github.com/gofiber/fiber/v3/addon/retry"
)
Default Config
retry.NewExponentialBackoff()
Custom Config
retry.NewExponentialBackoff(retry.Config{
InitialInterval: 2 * time.Second,
MaxBackoffTime: 64 * time.Second,
Multiplier: 2.0,
MaxRetryCount: 15,
})
Config
// Config defines the config for addon.
type Config struct {
// InitialInterval defines the initial time interval for backoff algorithm.
//
// Optional. Default: 1 * time.Second
InitialInterval time.Duration
// MaxBackoffTime defines maximum time duration for backoff algorithm. When
// the algorithm is reached this time, rest of the retries will be maximum
// 32 seconds.
//
// Optional. Default: 32 * time.Second
MaxBackoffTime time.Duration
// Multiplier defines multiplier number of the backoff algorithm.
//
// Optional. Default: 2.0
Multiplier float64
// MaxRetryCount defines maximum retry count for the backoff algorithm.
//
// Optional. Default: 10
MaxRetryCount int
// currentInterval tracks the current waiting time.
//
// Optional. Default: 1 * time.Second
currentInterval time.Duration
}
Default Config Example
// DefaultConfig is the default config for retry.
var DefaultConfig = Config{
InitialInterval: 1 * time.Second,
MaxBackoffTime: 32 * time.Second,
Multiplier: 2.0,
MaxRetryCount: 10,
currentInterval: 1 * time.Second,
}