Documentation
¶
Overview ¶
Package circuitbreaking implements the circuit breaker pattern for managing service availability and preventing cascading failures.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrCircuitBroken = errors.New("service circuit broken")
ErrCircuitBroken is returned when a circuit breaker has tripped.
View Source
var ( Providers = wire.NewSet( ProvideCircuitBreaker, ) )
Functions ¶
func RegisterCircuitBreaker ¶
RegisterCircuitBreaker registers a CircuitBreaker with the injector.
Types ¶
type CircuitBreaker ¶
CircuitBreaker tracks failures and successes to determine whether an operation should proceed.
func EnsureCircuitBreaker ¶
func EnsureCircuitBreaker(breaker CircuitBreaker) CircuitBreaker
EnsureCircuitBreaker ensures a valid CircuitBreaker is made available.
func NewNoopCircuitBreaker ¶
func NewNoopCircuitBreaker() CircuitBreaker
NewNoopCircuitBreaker returns a CircuitBreaker that always allows operations to proceed.
Example ¶
package main
import (
"fmt"
"github.com/verygoodsoftwarenotvirus/platform/v2/circuitbreaking"
)
func main() {
cb := circuitbreaking.NewNoopCircuitBreaker()
fmt.Println(cb.CanProceed())
cb.Failed()
fmt.Println(cb.CanProceed())
}
Output: true true
type Config ¶
type Config struct {
Name string `env:"NAME" json:"name"`
ErrorRate float64 `env:"ERROR_RATE" json:"circuitBreakerErrorPercentage"`
MinimumSampleThreshold uint64 `env:"MINIMUM_SAMPLE_THRESHOLD" json:"circuitBreakerMinimumOccurrenceThreshold"`
}
func (*Config) EnsureDefaults ¶
func (cfg *Config) EnsureDefaults()
type NoopCircuitBreaker ¶
type NoopCircuitBreaker struct{}
NoopCircuitBreaker is a no-op implementation that always allows operations to proceed.
func (*NoopCircuitBreaker) CanProceed ¶
func (n *NoopCircuitBreaker) CanProceed() bool
func (*NoopCircuitBreaker) CannotProceed ¶
func (n *NoopCircuitBreaker) CannotProceed() bool
func (*NoopCircuitBreaker) Failed ¶
func (n *NoopCircuitBreaker) Failed()
func (*NoopCircuitBreaker) Succeeded ¶
func (n *NoopCircuitBreaker) Succeeded()
Click to show internal directories.
Click to hide internal directories.