Help us shape the future of Go! Take the 2026 Go Developer Survey

middleware

package
v1.13.2 Latest Latest
Warning

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

Go to latest
Published: Oct 26, 2026 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