circuitbreaker

package
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HTTPMiddleware added in v1.0.0

func HTTPMiddleware(config *HTTPConfig) gin.HandlerFunc

HTTPMiddleware crea middleware de circuit breaker para Gin

Types

type CircuitBreaker

type CircuitBreaker struct {
	// contains filtered or unexported fields
}

CircuitBreaker implementa el patrón circuit breaker

func NewCircuitBreaker

func NewCircuitBreaker(name string, config *Config) *CircuitBreaker

NewCircuitBreaker crea una nueva instancia de circuit breaker

func (*CircuitBreaker) Execute added in v1.0.0

func (cb *CircuitBreaker) Execute(ctx context.Context, fn func() error) error

Execute ejecuta una función con protección del circuit breaker

func (*CircuitBreaker) ExecuteHTTP added in v1.0.0

func (cb *CircuitBreaker) ExecuteHTTP(ctx context.Context, fn func() (*http.Response, error)) (*http.Response, error)

ExecuteHTTP ejecuta una request HTTP con protección del circuit breaker

func (*CircuitBreaker) GetMetrics added in v1.0.0

func (cb *CircuitBreaker) GetMetrics() Metrics

GetMetrics retorna las métricas actuales

func (*CircuitBreaker) GetState added in v1.0.0

func (cb *CircuitBreaker) GetState() State

GetState retorna el estado actual del circuit breaker

func (*CircuitBreaker) Reset

func (cb *CircuitBreaker) Reset()

Reset reinicia el circuit breaker al estado cerrado

type CircuitBreakerManager

type CircuitBreakerManager struct {
	// contains filtered or unexported fields
}

CircuitBreakerManager gestiona múltiples circuit breakers

func NewCircuitBreakerManager

func NewCircuitBreakerManager(config *Config) *CircuitBreakerManager

NewCircuitBreakerManager crea un nuevo manager

func (*CircuitBreakerManager) GetOrCreateCircuitBreaker added in v1.0.0

func (cbm *CircuitBreakerManager) GetOrCreateCircuitBreaker(name string) *CircuitBreaker

GetOrCreateCircuitBreaker obtiene o crea un circuit breaker

type Config added in v1.0.0

type Config struct {
	// Threshold de fallos para abrir el circuit
	FailureThreshold int

	// Umbral de tasa de fallos (0.0 - 1.0)
	FailureRateThreshold float64

	// Número mínimo de requests para evaluar la tasa de fallos
	MinimumRequestThreshold int

	// Tiempo que permanece abierto antes de pasar a half-open
	OpenTimeout time.Duration

	// Timeout para requests individuales
	RequestTimeout time.Duration

	// Número máximo de requests permitidas en estado half-open
	MaxHalfOpenRequests int

	// Ventana de tiempo para estadísticas
	StatisticsWindow time.Duration

	// Función para determinar si una respuesta es un fallo
	IsFailure func(*http.Response, error) bool

	// Función para determinar si se debe aplicar circuit breaker
	ShouldTrip func(State, Metrics) bool

	// Callbacks
	OnStateChange func(State, State)
	OnSuccess     func()
	OnFailure     func(error)
}

Config configuración del circuit breaker

func DefaultConfig added in v1.0.0

func DefaultConfig() *Config

DefaultConfig retorna configuración por defecto

type HTTPConfig added in v1.0.0

type HTTPConfig struct {
	// Nombre del circuit breaker
	Name string

	// Configuración del circuit breaker
	CircuitConfig *Config

	// Función para generar key única por endpoint/método
	KeyGenerator func(*gin.Context) string

	// Función para determinar si aplicar circuit breaker
	Skipper func(*gin.Context) bool

	// Handler para cuando el circuit está abierto
	FallbackHandler gin.HandlerFunc
}

HTTPConfig configuración del middleware HTTP

type Metrics added in v1.0.0

type Metrics struct {
	TotalRequests        int64
	TotalSuccesses       int64
	TotalFailures        int64
	ConsecutiveFailures  int64
	ConsecutiveSuccesses int64
	LastFailureTime      time.Time
	LastSuccessTime      time.Time
}

Metrics estadísticas del circuit breaker

type State added in v1.0.0

type State int

State representa el estado del circuit breaker

const (
	// StateClosed - circuit breaker cerrado, permite todas las requests
	StateClosed State = iota
	// StateOpen - circuit breaker abierto, rechaza todas las requests
	StateOpen
	// StateHalfOpen - circuit breaker semi-abierto, permite requests limitadas para test
	StateHalfOpen
)

func (State) String added in v1.0.0

func (s State) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL