7 "github.com/streadway/handy/breaker"
9 "github.com/go-kit/kit/endpoint"
12 // HandyBreaker returns an endpoint.Middleware that implements the circuit
13 // breaker pattern using the streadway/handy/breaker package. Only errors
14 // returned by the wrapped endpoint count against the circuit breaker's error
17 // See http://godoc.org/github.com/streadway/handy/breaker for more
19 func HandyBreaker(cb breaker.Breaker) endpoint.Middleware {
20 return func(next endpoint.Endpoint) endpoint.Endpoint {
21 return func(ctx context.Context, request interface{}) (response interface{}, err error) {
23 return nil, breaker.ErrCircuitOpen
26 defer func(begin time.Time) {
28 cb.Success(time.Since(begin))
30 cb.Failure(time.Since(begin))
34 response, err = next(ctx, request)