Documentation
¶
Index ¶
- func CircuitBreakerMiddleware(cb *CircuitBreaker) func(http.RoundTripper) http.RoundTripper
- func LoggingMiddleware(logger Logger) func(http.RoundTripper) http.RoundTripper
- func RateLimitMiddleware(limiter *RateLimiter) func(http.RoundTripper) http.RoundTripper
- func RetryMiddleware(config RetryConfig) func(http.RoundTripper) http.RoundTripper
- type CircuitBreaker
- type CircuitBreakerConfig
- type CircuitBreakerState
- type Logger
- type RateLimiter
- type RetryConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CircuitBreakerMiddleware ¶
func CircuitBreakerMiddleware(cb *CircuitBreaker) func(http.RoundTripper) http.RoundTripper
CircuitBreakerMiddleware returns a middleware that implements circuit breaker
func LoggingMiddleware ¶
func LoggingMiddleware(logger Logger) func(http.RoundTripper) http.RoundTripper
func RateLimitMiddleware ¶
func RateLimitMiddleware(limiter *RateLimiter) func(http.RoundTripper) http.RoundTripper
RateLimitMiddleware returns a middleware that enforces rate limiting
func RetryMiddleware ¶
func RetryMiddleware(config RetryConfig) func(http.RoundTripper) http.RoundTripper
RetryMiddleware returns a middleware that retries requests based on the config
Types ¶
type CircuitBreaker ¶
type CircuitBreaker struct {
// contains filtered or unexported fields
}
CircuitBreaker implements a simple circuit breaker
func NewCircuitBreaker ¶
func NewCircuitBreaker(config CircuitBreakerConfig) *CircuitBreaker
NewCircuitBreaker creates a new circuit breaker
type CircuitBreakerConfig ¶
type CircuitBreakerConfig struct {
FailureThreshold int // Number of failures to open the circuit
SuccessThreshold int // Number of successes to close the circuit from half-open
Timeout time.Duration // Time to wait before trying half-open
}
CircuitBreakerConfig holds configuration for circuit breaker middleware
func DefaultCircuitBreakerConfig ¶
func DefaultCircuitBreakerConfig() CircuitBreakerConfig
DefaultCircuitBreakerConfig returns a default circuit breaker configuration
type CircuitBreakerState ¶
type CircuitBreakerState int
CircuitBreakerState represents the state of the circuit breaker
const ( StateClosed CircuitBreakerState = iota StateOpen StateHalfOpen )
type RateLimiter ¶
type RateLimiter struct {
// contains filtered or unexported fields
}
RateLimiter implements a basic token bucket rate limiter
func NewRateLimiter ¶
func NewRateLimiter(capacity int, refillRate time.Duration) *RateLimiter
NewRateLimiter creates a new rate limiter
func (*RateLimiter) Allow ¶
func (rl *RateLimiter) Allow() bool
Allow checks if a request is allowed and consumes a token
type RetryConfig ¶
type RetryConfig struct {
MaxRetries int
Backoff func(attempt int) time.Duration
RetryCondition func(resp *http.Response, err error) bool
}
RetryConfig holds configuration for retry middleware
func DefaultRetryConfig ¶
func DefaultRetryConfig() RetryConfig
DefaultRetryConfig returns a default retry configuration