Package lb
Overview ▹
Index ▹
Variables
ErrNoEndpoints is returned when no qualifying endpoints are available.
var ErrNoEndpoints = errors.New("no endpoints available")
func Retry ¶
func Retry(max int, timeout time.Duration, b Balancer) endpoint.Endpoint
Retry wraps a service load balancer and returns an endpoint oriented load balancer for the specified service method. Requests to the endpoint will be automatically load balanced via the load balancer. Requests that return errors will be retried until they succeed, up to max times, or until the timeout is elapsed, whichever comes first.
func RetryWithCallback ¶
func RetryWithCallback(timeout time.Duration, b Balancer, cb Callback) endpoint.Endpoint
RetryWithCallback wraps a service load balancer and returns an endpoint oriented load balancer for the specified service method. Requests to the endpoint will be automatically load balanced via the load balancer. Requests that return errors will be retried until they succeed, up to max times, until the callback returns false, or until the timeout is elapsed, whichever comes first.
type Balancer ¶
Balancer yields endpoints according to some heuristic.
type Balancer interface { Endpoint() (endpoint.Endpoint, error) }
func NewRandom ¶
func NewRandom(s sd.Subscriber, seed int64) Balancer
NewRandom returns a load balancer that selects services randomly.
func NewRoundRobin ¶
func NewRoundRobin(s sd.Subscriber) Balancer
NewRoundRobin returns a load balancer that returns services in sequence.
type Callback ¶
Callback is a function that is given the current attempt count and the error received from the underlying endpoint. It should return whether the Retry function should continue trying to get a working endpoint, and a custom error if desired. The error message may be nil, but a true/false is always expected. In all cases, if the replacement error is supplied, the received error will be replaced in the calling context.
type Callback func(n int, received error) (keepTrying bool, replacement error)
type RetryError ¶
RetryError is an error wrapper that is used by the retry mechanism. All errors returned by the retry mechanism via its endpoint will be RetryErrors.
type RetryError struct { RawErrors []error // all errors encountered from endpoints directly Final error // the final, terminating error }
func (RetryError) Error ¶
func (e RetryError) Error() string