throttle

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Jan 28, 2018 License: MIT Imports: 1 Imported by: 14

Documentation

Overview

Package throttle implements throttle strategies.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func OptCloseChan

func OptCloseChan(c <-chan struct{}) func(*Type)

OptCloseChan sets a read-only channel that, if closed, will interrupt a retry throttle early.

func OptMaxUnthrottledRetries

func OptMaxUnthrottledRetries(n int) func(*Type)

OptMaxUnthrottledRetries sets the maximum number of consecutive retries that will be attempted before throttling will begin.

func OptThrottlePeriod

func OptThrottlePeriod(period time.Duration) func(*Type)

OptThrottlePeriod sets the static period of time that throttles will last.

Types

type Type

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

Type is a throttle of retries to avoid endless busy loops when a message fails to reach its destination. This isn't intended to be used for hitting load balanced resources and therefore doesn't implement anything clever like exponential backoff.

func New

func New(options ...func(*Type)) *Type

New creates a new throttle, which permits a static number of consecutive retries before throttling subsequent retries. A success will reset the count of consecutive retries.

func (*Type) Reset

func (t *Type) Reset()

Reset clears the count of consecutive retries.

func (*Type) Retry

func (t *Type) Retry() bool

Retry indicates that a retry is about to occur and, if appropriate, will block until either the throttle period is over and the retry may be attempted (returning true) or that the close channel has closed (returning false).

Jump to

Keyboard shortcuts

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