Documentation ¶
Overview ¶
Package circuitbreaker implements the circuit breaker pattern.
Circuit breakers prevent thundering herds, and improve resiliency against intermittent errors. Every client-side endpoint should be wrapped in a circuit breaker.
We provide several implementations in this package, but if you're looking for guidance, Gobreaker is probably the best place to start. It has a simple and intuitive API, and is well-tested.
Index ¶
Constants ¶
const (
ConversionErrorCode = 2400
)
Variables ¶
var (
ConversionError conversionError = "conversion error"
)
Functions ¶
func Gobreaker ¶
func Gobreaker[O interface{}](cb *gobreaker.CircuitBreaker) endpoint.Middleware[O]
Gobreaker returns an endpoint.Middleware that implements the circuit breaker pattern using the sony/gobreaker package. Only errors returned by the wrapped endpoint count against the circuit breaker's error count.
See http://godoc.org/github.com/sony/gobreaker for more information.
func HandyBreaker ¶
func HandyBreaker[O interface{}](cb breaker.Breaker) endpoint.Middleware[O]
HandyBreaker returns an endpoint.Middleware that implements the circuit breaker pattern using the streadway/handy/breaker package. Only errors returned by the wrapped endpoint count against the circuit breaker's error count.
See http://godoc.org/github.com/streadway/handy/breaker for more information.
func Hystrix ¶
func Hystrix[O interface{}](commandName string) endpoint.Middleware[O]
Hystrix returns an endpoint.Middleware that implements the circuit breaker pattern using the afex/hystrix-go package.
When using this circuit breaker, please configure your commands separately.
See https://godoc.org/github.com/afex/hystrix-go/hystrix for more information.
Types ¶
This section is empty.