File tree Expand file tree Collapse file tree 1 file changed +6
-0
lines changed
message/router/middleware Expand file tree Collapse file tree 1 file changed +6
-0
lines changed Original file line number Diff line number Diff line change @@ -5,16 +5,22 @@ import (
55 "github.com/sony/gobreaker"
66)
77
8+ // CircuitBreaker is a middleware that wraps the handler in a circuit breaker.
9+ // Based on the configuration, the circuit breaker will fail fast if the handler keeps returning errors.
10+ // This is useful for preventing cascading failures.
811type CircuitBreaker struct {
912 cb * gobreaker.CircuitBreaker
1013}
1114
15+ // NewCircuitBreaker returns a new CircuitBreaker middleware.
16+ // Refer to the gobreaker documentation for the available settings.
1217func NewCircuitBreaker (settings gobreaker.Settings ) CircuitBreaker {
1318 return CircuitBreaker {
1419 cb : gobreaker .NewCircuitBreaker (settings ),
1520 }
1621}
1722
23+ // Middleware returns the CircuitBreaker middleware.
1824func (c CircuitBreaker ) Middleware (h message.HandlerFunc ) message.HandlerFunc {
1925 return func (msg * message.Message ) ([]* message.Message , error ) {
2026 out , err := c .cb .Execute (func () (interface {}, error ) {
You can’t perform that action at this time.
0 commit comments