1package circuitbreaker 2 3import ( 4 "context" 5 6 "github.com/sony/gobreaker" 7 8 "github.com/go-kit/kit/endpoint" 9) 10 11// Gobreaker returns an endpoint.Middleware that implements the circuit 12// breaker pattern using the sony/gobreaker package. Only errors returned by 13// the wrapped endpoint count against the circuit breaker's error count. 14// 15// See http://godoc.org/github.com/sony/gobreaker for more information. 16func Gobreaker(cb *gobreaker.CircuitBreaker) endpoint.Middleware { 17 return func(next endpoint.Endpoint) endpoint.Endpoint { 18 return func(ctx context.Context, request interface{}) (interface{}, error) { 19 return cb.Execute(func() (interface{}, error) { return next(ctx, request) }) 20 } 21 } 22} 23