Codebase list golang-github-go-kit-kit / c377c2ee-57ee-4295-ba5c-f8a0b0e527d1/main circuitbreaker / gobreaker.go
c377c2ee-57ee-4295-ba5c-f8a0b0e527d1/main

Tree @c377c2ee-57ee-4295-ba5c-f8a0b0e527d1/main (Download .tar.gz)

gobreaker.go @c377c2ee-57ee-4295-ba5c-f8a0b0e527d1/main

2cddaa7
 
 
4a29204
 
2cddaa7
 
 
 
 
569b930
 
 
 
 
4a67d58
2cddaa7
 
 
 
 
 
package circuitbreaker

import (
	"context"

	"github.com/sony/gobreaker"

	"github.com/go-kit/kit/endpoint"
)

// 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 Gobreaker(cb *gobreaker.CircuitBreaker) endpoint.Middleware {
	return func(next endpoint.Endpoint) endpoint.Endpoint {
		return func(ctx context.Context, request interface{}) (interface{}, error) {
			return cb.Execute(func() (interface{}, error) { return next(ctx, request) })
		}
	}
}