backo

package module
v0.0.0-...-cfbfc75 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2021 License: MIT Imports: 3 Imported by: 0

README

Backo GoDoc

Exponential backoff for Go (Go port of segmentio/backo).

Usage

import "github.com/segmentio/backo-go"

// Create a Backo instance.
backo := backo.NewBacko(milliseconds(100), 2, 1, milliseconds(10*1000))
// OR with defaults.
backo := backo.DefaultBacko()

// Use the ticker API.
ticker := b.NewTicker()
for {
    timeout := time.After(5 * time.Minute)
    select {
    case  <-ticker.C:
        fmt.Println("ticked")
    case <- timeout:
        fmt.Println("timed out")
    }
}

// Or simply work with backoff intervals directly.
for i := 0; i < n; i++ {
    // Sleep the current goroutine.
    backo.Sleep(i)
    // Retrieve the duration manually.
    duration := backo.Duration(i)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Backo

type Backo struct {
	// contains filtered or unexported fields
}

func DefaultBacko

func DefaultBacko() *Backo

Creates a backo instance with the following defaults:

base: 100 milliseconds
factor: 2
jitter: 0
cap: 10 seconds

func NewBacko

func NewBacko(base time.Duration, factor uint8, jitter float64, cap time.Duration) *Backo

Creates a backo instance with the given parameters

func (*Backo) Duration

func (backo *Backo) Duration(attempt int) time.Duration

Duration returns the backoff interval for the given attempt.

func (*Backo) NewTicker

func (b *Backo) NewTicker() *Ticker

func (*Backo) Sleep

func (backo *Backo) Sleep(attempt int)

Sleep pauses the current goroutine for the backoff interval for the given attempt.

type Ticker

type Ticker struct {
	C <-chan time.Time
	// contains filtered or unexported fields
}

func (*Ticker) Stop

func (t *Ticker) Stop()

Jump to

Keyboard shortcuts

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