Documentation
¶
Index ¶
- func HTTPMiddleware(config *HTTPConfig) 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) GetMetrics() Metrics
- func (cb *CircuitBreaker) GetState() State
- func (cb *CircuitBreaker) Reset()
- type CircuitBreakerManager
- type Config
- type HTTPConfig
- type Metrics
- type State
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