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 OptMaxExponentPeriod ¶
OptMaxExponentPeriod sets the maximum period of time that throttles will last when exponentially increasing.
func OptMaxUnthrottledRetries ¶
OptMaxUnthrottledRetries sets the maximum number of consecutive retries that will be attempted before throttling will begin.
func OptThrottlePeriod ¶
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.
func New ¶
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) ExponentialRetry ¶
ExponentialRetry is the same as Retry except also sets the throttle period to exponentially increase after each consecutive retry.
func (*Type) ExponentialRetryWithContext ¶
ExponentialRetryWithContext is the same as RetryWithContext except also sets the throttle period to exponentially increase after each consecutive retry.
func (*Type) Reset ¶
func (t *Type) Reset()
Reset clears the count of consecutive retries and resets the exponential backoff.
func (*Type) Retry ¶
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).
func (*Type) RetryWithContext ¶
RetryWithContext 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), or that the context was cancelled (false).