middleware

package
v0.7.2 Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2025 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CircuitBreakerConfig

type CircuitBreakerConfig struct {
	// Failure threshold to open circuit
	FailureThreshold int `json:"failure_threshold" yaml:"failure_threshold"`

	// Success threshold to close circuit from half-open
	SuccessThreshold int `json:"success_threshold" yaml:"success_threshold"`

	// Timeout before transitioning from open to half-open
	Timeout time.Duration `json:"timeout" yaml:"timeout"`

	// Maximum number of concurrent requests in half-open state
	MaxConcurrentRequests int `json:"max_concurrent_requests" yaml:"max_concurrent_requests"`

	// Health statuses that should trigger circuit opening
	TriggerStatuses []health.HealthStatus `json:"trigger_statuses" yaml:"trigger_statuses"`

	// Enable health-based circuit breaking
	EnableHealthBased bool `json:"enable_health_based" yaml:"enable_health_based"`

	// Health check interval for circuit decisions
	HealthCheckInterval time.Duration `json:"health_check_interval" yaml:"health_check_interval"`

	// Force open circuit if health is unhealthy
	ForceOpenOnUnhealthy bool `json:"force_open_on_unhealthy" yaml:"force_open_on_unhealthy"`

	// Force close circuit if health is healthy
	ForceCloseOnHealthy bool `json:"force_close_on_healthy" yaml:"force_close_on_healthy"`

	// Enable request-based circuit breaking
	EnableRequestBased bool `json:"enable_request_based" yaml:"enable_request_based"`

	// Time window for failure counting
	FailureWindow time.Duration `json:"failure_window" yaml:"failure_window"`

	// Minimum number of requests before considering circuit opening
	MinimumRequests int `json:"minimum_requests" yaml:"minimum_requests"`

	// Error rate threshold (0.0 to 1.0)
	ErrorRateThreshold float64 `json:"error_rate_threshold" yaml:"error_rate_threshold"`

	// Skip circuit breaker for specific paths
	SkipPaths []string `json:"skip_paths" yaml:"skip_paths"`

	// Skip circuit breaker for specific methods
	SkipMethods []string `json:"skip_methods" yaml:"skip_methods"`

	// Custom response for circuit open
	OpenResponse string `json:"open_response" yaml:"open_response"`

	// Include circuit state in headers
	IncludeStateHeaders bool `json:"include_state_headers" yaml:"include_state_headers"`

	// State header name
	StateHeaderName string `json:"state_header_name" yaml:"state_header_name"`

	// Enable detailed metrics
	EnableMetrics bool `json:"enable_metrics" yaml:"enable_metrics"`

	// Enable state change notifications
	EnableNotifications bool `json:"enable_notifications" yaml:"enable_notifications"`
}

CircuitBreakerConfig contains configuration for circuit breaker.

func DefaultCircuitBreakerConfig

func DefaultCircuitBreakerConfig() *CircuitBreakerConfig

DefaultCircuitBreakerConfig returns default configuration.

type CircuitBreakerMiddleware

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

CircuitBreakerMiddleware provides circuit breaker functionality based on health status.

func CreateCircuitBreakerMiddleware

func CreateCircuitBreakerMiddleware(healthService health.HealthService, logger logger.Logger, metrics shared.Metrics) *CircuitBreakerMiddleware

CreateCircuitBreakerMiddleware creates a circuit breaker middleware with default configuration.

func NewCircuitBreakerMiddleware

func NewCircuitBreakerMiddleware(healthService health.HealthService, config *CircuitBreakerConfig, logger logger.Logger, metrics shared.Metrics) *CircuitBreakerMiddleware

NewCircuitBreakerMiddleware creates a new circuit breaker middleware.

func (*CircuitBreakerMiddleware) ForceClose

func (cbm *CircuitBreakerMiddleware) ForceClose()

ForceClose forces the circuit breaker to closed state.

func (*CircuitBreakerMiddleware) ForceOpen

func (cbm *CircuitBreakerMiddleware) ForceOpen()

ForceOpen forces the circuit breaker to open state.

func (*CircuitBreakerMiddleware) GetState

func (cbm *CircuitBreakerMiddleware) GetState() CircuitState

GetState returns the current circuit state.

func (*CircuitBreakerMiddleware) GetStats

GetStats returns circuit breaker statistics.

func (*CircuitBreakerMiddleware) Handler

func (cbm *CircuitBreakerMiddleware) Handler() func(http.Handler) http.Handler

Handler returns the circuit breaker middleware handler function.

func (*CircuitBreakerMiddleware) Reset

func (cbm *CircuitBreakerMiddleware) Reset()

Reset resets the circuit breaker to closed state.

type CircuitBreakerStats

type CircuitBreakerStats struct {
	State              CircuitState `json:"state"`
	TotalRequests      int64        `json:"total_requests"`
	SuccessfulRequests int64        `json:"successful_requests"`
	FailedRequests     int64        `json:"failed_requests"`
	RejectedRequests   int64        `json:"rejected_requests"`
	CurrentFailures    int          `json:"current_failures"`
	CurrentSuccesses   int          `json:"current_successes"`
	LastFailure        time.Time    `json:"last_failure"`
	LastSuccess        time.Time    `json:"last_success"`
	LastTransition     time.Time    `json:"last_transition"`
}

CircuitBreakerStats contains circuit breaker statistics.

type CircuitState

type CircuitState int

CircuitState represents the state of the circuit breaker.

const (
	CircuitStateClosed CircuitState = iota
	CircuitStateOpen
	CircuitStateHalfOpen
)

func (CircuitState) String

func (cs CircuitState) String() string

String returns the string representation of the circuit state.

type HealthBasedCircuitBreaker

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

HealthBasedCircuitBreaker provides a simpler health-only circuit breaker.

func CreateHealthBasedCircuitBreaker

func CreateHealthBasedCircuitBreaker(healthService health.HealthService, logger logger.Logger, metrics shared.Metrics) *HealthBasedCircuitBreaker

CreateHealthBasedCircuitBreaker creates a health-based circuit breaker with default configuration.

func NewHealthBasedCircuitBreaker

func NewHealthBasedCircuitBreaker(healthService health.HealthService, config *HealthBasedCircuitBreakerConfig, logger logger.Logger, metrics shared.Metrics) *HealthBasedCircuitBreaker

NewHealthBasedCircuitBreaker creates a new health-based circuit breaker.

func (*HealthBasedCircuitBreaker) GetState

func (hcb *HealthBasedCircuitBreaker) GetState() CircuitState

GetState returns the current circuit state.

func (*HealthBasedCircuitBreaker) Handler

func (hcb *HealthBasedCircuitBreaker) Handler() func(http.Handler) http.Handler

Handler returns the health-based circuit breaker handler.

type HealthBasedCircuitBreakerConfig

type HealthBasedCircuitBreakerConfig struct {
	// Health statuses that trigger circuit opening
	TriggerStatuses []health.HealthStatus `json:"trigger_statuses" yaml:"trigger_statuses"`

	// Health check interval
	CheckInterval time.Duration `json:"check_interval" yaml:"check_interval"`

	// Close circuit when health recovers
	AutoClose bool `json:"auto_close" yaml:"auto_close"`

	// Timeout before checking health for recovery
	RecoveryTimeout time.Duration `json:"recovery_timeout" yaml:"recovery_timeout"`

	// Skip paths
	SkipPaths []string `json:"skip_paths" yaml:"skip_paths"`

	// Response message
	OpenResponse string `json:"open_response" yaml:"open_response"`
}

HealthBasedCircuitBreakerConfig contains configuration for health-based circuit breaker.

func DefaultHealthBasedCircuitBreakerConfig

func DefaultHealthBasedCircuitBreakerConfig() *HealthBasedCircuitBreakerConfig

DefaultHealthBasedCircuitBreakerConfig returns default configuration.

type HealthMiddleware

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

HealthMiddleware provides health check middleware functionality.

func CreateHealthMiddleware

func CreateHealthMiddleware(healthService health.HealthService, logger logger.Logger, metrics shared.Metrics) *HealthMiddleware

CreateHealthMiddleware creates a health middleware with default configuration.

func NewHealthMiddleware

func NewHealthMiddleware(healthService health.HealthService, config *HealthMiddlewareConfig, logger logger.Logger, metrics shared.Metrics) *HealthMiddleware

NewHealthMiddleware creates a new health middleware.

func (*HealthMiddleware) Handler

func (hm *HealthMiddleware) Handler() func(http.Handler) http.Handler

Handler returns the middleware handler function.

type HealthMiddlewareConfig

type HealthMiddlewareConfig struct {
	// Skip health checks for specific paths
	SkipPaths []string `json:"skip_paths" yaml:"skip_paths"`

	// Skip health checks for specific methods
	SkipMethods []string `json:"skip_methods" yaml:"skip_methods"`

	// Skip health checks for specific headers
	SkipHeaders map[string]string `json:"skip_headers" yaml:"skip_headers"`

	// Perform health check on every request
	CheckOnEveryRequest bool `json:"check_on_every_request" yaml:"check_on_every_request"`

	// Minimum interval between health checks
	CheckInterval time.Duration `json:"check_interval" yaml:"check_interval"`

	// Return 503 if unhealthy
	FailOnUnhealthy bool `json:"fail_on_unhealthy" yaml:"fail_on_unhealthy"`

	// Return 503 if degraded
	FailOnDegraded bool `json:"fail_on_degraded" yaml:"fail_on_degraded"`

	// Custom response for unhealthy status
	UnhealthyResponse string `json:"unhealthy_response" yaml:"unhealthy_response"`

	// Custom response for degraded status
	DegradedResponse string `json:"degraded_response" yaml:"degraded_response"`

	// Include health status in response headers
	IncludeHealthHeaders bool `json:"include_health_headers" yaml:"include_health_headers"`

	// Health header name
	HealthHeaderName string `json:"health_header_name" yaml:"health_header_name"`

	// Include detailed health information
	IncludeDetailedHealth bool `json:"include_detailed_health" yaml:"include_detailed_health"`

	// Timeout for health checks
	HealthCheckTimeout time.Duration `json:"health_check_timeout" yaml:"health_check_timeout"`

	// Enable request tracking
	TrackRequests bool `json:"track_requests" yaml:"track_requests"`

	// Enable performance monitoring
	MonitorPerformance bool `json:"monitor_performance" yaml:"monitor_performance"`
}

HealthMiddlewareConfig contains configuration for health middleware.

func DefaultHealthMiddlewareConfig

func DefaultHealthMiddlewareConfig() *HealthMiddlewareConfig

DefaultHealthMiddlewareConfig returns default configuration.

type LivenessMiddleware

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

LivenessMiddleware provides liveness check middleware.

func CreateLivenessMiddleware

func CreateLivenessMiddleware(logger logger.Logger, metrics shared.Metrics) *LivenessMiddleware

CreateLivenessMiddleware creates a liveness middleware with default configuration.

func NewLivenessMiddleware

func NewLivenessMiddleware(config *LivenessMiddlewareConfig, logger logger.Logger, metrics shared.Metrics) *LivenessMiddleware

NewLivenessMiddleware creates a new liveness middleware.

func (*LivenessMiddleware) Handler

func (lm *LivenessMiddleware) Handler() func(http.Handler) http.Handler

Handler returns the liveness middleware handler function.

type LivenessMiddlewareConfig

type LivenessMiddlewareConfig struct {
	// Add liveness headers to responses
	AddLivenessHeaders bool `json:"add_liveness_headers" yaml:"add_liveness_headers"`

	// Liveness header name
	LivenessHeaderName string `json:"liveness_header_name" yaml:"liveness_header_name"`

	// Include uptime in headers
	IncludeUptime bool `json:"include_uptime" yaml:"include_uptime"`

	// Uptime header name
	UptimeHeaderName string `json:"uptime_header_name" yaml:"uptime_header_name"`
}

LivenessMiddlewareConfig contains configuration for liveness middleware.

func DefaultLivenessMiddlewareConfig

func DefaultLivenessMiddlewareConfig() *LivenessMiddlewareConfig

DefaultLivenessMiddlewareConfig returns default configuration.

type ReadinessMiddleware

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

ReadinessMiddleware provides readiness check middleware.

func CreateReadinessMiddleware

func CreateReadinessMiddleware(healthService health.HealthService, logger logger.Logger, metrics shared.Metrics) *ReadinessMiddleware

CreateReadinessMiddleware creates a readiness middleware with default configuration.

func NewReadinessMiddleware

func NewReadinessMiddleware(healthService health.HealthService, config *ReadinessMiddlewareConfig, logger logger.Logger, metrics shared.Metrics) *ReadinessMiddleware

NewReadinessMiddleware creates a new readiness middleware.

func (*ReadinessMiddleware) Handler

func (rm *ReadinessMiddleware) Handler() func(http.Handler) http.Handler

Handler returns the readiness middleware handler function.

type ReadinessMiddlewareConfig

type ReadinessMiddlewareConfig struct {
	// Only allow requests when service is ready
	StrictReadiness bool `json:"strict_readiness" yaml:"strict_readiness"`

	// Grace period after startup before enforcing readiness
	GracePeriod time.Duration `json:"grace_period" yaml:"grace_period"`

	// Custom response for not ready status
	NotReadyResponse string `json:"not_ready_response" yaml:"not_ready_response"`

	// Paths to check readiness for
	CheckPaths []string `json:"check_paths" yaml:"check_paths"`

	// Skip readiness check for specific paths
	SkipPaths []string `json:"skip_paths" yaml:"skip_paths"`
}

ReadinessMiddlewareConfig contains configuration for readiness middleware.

func DefaultReadinessMiddlewareConfig

func DefaultReadinessMiddlewareConfig() *ReadinessMiddlewareConfig

DefaultReadinessMiddlewareConfig returns default configuration.

Jump to

Keyboard shortcuts

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