 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- func CircuitBreakerHealthHandler(cbm *CircuitBreakerManager) gin.HandlerFunc
- func CircuitBreakerMiddleware(cb *CircuitBreaker) gin.HandlerFunc
- func HTTPMiddleware(config *HTTPConfig) gin.HandlerFunc
- func MultiCircuitBreakerMiddleware(cbm *CircuitBreakerManager, circuitBreakerName string) gin.HandlerFunc
- type CircuitBreaker
- func (cb *CircuitBreaker) Execute(ctx context.Context, fn func() error) error
- func (cb *CircuitBreaker) ExecuteHTTP(ctx context.Context, fn func() (*http.Response, error)) (*http.Response, error)
- func (cb *CircuitBreaker) ForceOpen()
- func (cb *CircuitBreaker) GetMetrics() Metrics
- func (cb *CircuitBreaker) GetState() State
- func (cb *CircuitBreaker) GetStats() map[string]interface{}
- func (cb *CircuitBreaker) Reset()
 
- type CircuitBreakerConfig
- type CircuitBreakerManager
- func (cbm *CircuitBreakerManager) AddCircuitBreaker(name string, config *CircuitBreakerConfig) *CircuitBreaker
- func (cbm *CircuitBreakerManager) GetAllStats() map[string]interface{}
- func (cbm *CircuitBreakerManager) GetCircuitBreaker(name string) *CircuitBreaker
- func (cbm *CircuitBreakerManager) GetOrCreateCircuitBreaker(name string) *CircuitBreaker
- func (cbm *CircuitBreakerManager) HealthCheck() map[string]string
 
- type CircuitBreakerState
- type Config
- type HTTPConfig
- type Metrics
- type State
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CircuitBreakerHealthHandler ¶
func CircuitBreakerHealthHandler(cbm *CircuitBreakerManager) gin.HandlerFunc
CircuitBreakerHealthHandler handler para verificar el estado del circuit breaker
func CircuitBreakerMiddleware ¶
func CircuitBreakerMiddleware(cb *CircuitBreaker) gin.HandlerFunc
CircuitBreakerMiddleware middleware que implementa circuit breaker
func HTTPMiddleware ¶ added in v1.0.0
func HTTPMiddleware(config *HTTPConfig) gin.HandlerFunc
HTTPMiddleware crea middleware de circuit breaker para Gin
func MultiCircuitBreakerMiddleware ¶
func MultiCircuitBreakerMiddleware(cbm *CircuitBreakerManager, circuitBreakerName string) gin.HandlerFunc
MultiCircuitBreakerMiddleware middleware que usa el manager
Types ¶
type CircuitBreaker ¶
type CircuitBreaker struct {
	// contains filtered or unexported fields
}
    CircuitBreaker implementa el patrón circuit breaker
func NewCircuitBreaker ¶
NewCircuitBreaker crea una nueva instancia de circuit breaker
func (*CircuitBreaker) Execute ¶ added in v1.0.0
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) ForceOpen ¶
func (cb *CircuitBreaker) ForceOpen()
ForceOpen fuerza el circuit breaker al estado abierto
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) GetStats ¶
func (cb *CircuitBreaker) GetStats() map[string]interface{}
GetStats retorna estadísticas del circuit breaker
type CircuitBreakerConfig ¶
type CircuitBreakerConfig struct {
	// Failure threshold - número de fallos consecutivos para abrir el circuito
	FailureThreshold int
	// Recovery timeout - tiempo en estado abierto antes de intentar recovery
	RecoveryTimeout time.Duration
	// Recovery threshold - número de requests exitosas para cerrar el circuito
	RecoveryThreshold int
	// Request timeout - timeout individual para requests
	RequestTimeout time.Duration
	// Status codes que se consideran fallos
	FailureStatusCodes []int
	// Paths que deben ser protegidos por el circuit breaker
	ProtectedPaths []string
	// Métodos HTTP que deben ser protegidos
	ProtectedMethods []string
	// Callback para eventos del circuit breaker
	OnStateChange func(from, to CircuitBreakerState)
}
    CircuitBreakerConfig configuración del circuit breaker
func DefaultCircuitBreakerConfig ¶
func DefaultCircuitBreakerConfig() *CircuitBreakerConfig
DefaultCircuitBreakerConfig retorna configuración por defecto
type CircuitBreakerManager ¶
type CircuitBreakerManager struct {
	// contains filtered or unexported fields
}
    CircuitBreakerManager maneja múltiples circuit breakers
func NewCircuitBreakerManager ¶
func NewCircuitBreakerManager(config *Config) *CircuitBreakerManager
NewCircuitBreakerManager crea un nuevo manager
func (*CircuitBreakerManager) AddCircuitBreaker ¶
func (cbm *CircuitBreakerManager) AddCircuitBreaker(name string, config *CircuitBreakerConfig) *CircuitBreaker
AddCircuitBreaker añade un circuit breaker
func (*CircuitBreakerManager) GetAllStats ¶
func (cbm *CircuitBreakerManager) GetAllStats() map[string]interface{}
GetAllStats obtiene estadísticas de todos los circuit breakers
func (*CircuitBreakerManager) GetCircuitBreaker ¶
func (cbm *CircuitBreakerManager) GetCircuitBreaker(name string) *CircuitBreaker
GetCircuitBreaker obtiene un circuit breaker por nombre
func (*CircuitBreakerManager) GetOrCreateCircuitBreaker ¶ added in v1.0.0
func (cbm *CircuitBreakerManager) GetOrCreateCircuitBreaker(name string) *CircuitBreaker
GetOrCreateCircuitBreaker obtiene o crea un circuit breaker
func (*CircuitBreakerManager) HealthCheck ¶
func (cbm *CircuitBreakerManager) HealthCheck() map[string]string
HealthCheck verifica el estado de todos los circuit breakers
type CircuitBreakerState ¶
type CircuitBreakerState int
CircuitBreakerState representa el estado del circuit breaker
const ( StateClosed CircuitBreakerState = iota StateOpen StateHalfOpen )
func (CircuitBreakerState) String ¶
func (s CircuitBreakerState) String() string
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