Class: Fizzy::ResilienceConfig
- Inherits:
-
Object
- Object
- Fizzy::ResilienceConfig
- Defined in:
- lib/fizzy/resilience.rb
Overview
Configuration container for resilience patterns.
Bundles circuit breaker, bulkhead, and rate limiter settings into a single configuration object.
Instance Attribute Summary collapse
- #bulkhead ⇒ Bulkhead? readonly
- #circuit_breaker ⇒ CircuitBreaker? readonly
- #rate_limiter ⇒ RateLimiter? readonly
Instance Method Summary collapse
-
#call { ... } ⇒ Object
Wraps a block with all configured resilience patterns.
-
#initialize(circuit_breaker: nil, bulkhead: nil, rate_limiter: nil) ⇒ ResilienceConfig
constructor
A new instance of ResilienceConfig.
Constructor Details
#initialize(circuit_breaker: nil, bulkhead: nil, rate_limiter: nil) ⇒ ResilienceConfig
Returns a new instance of ResilienceConfig.
28 29 30 31 32 |
# File 'lib/fizzy/resilience.rb', line 28 def initialize(circuit_breaker: nil, bulkhead: nil, rate_limiter: nil) @circuit_breaker = circuit_breaker ? CircuitBreaker.new(**circuit_breaker) : nil @bulkhead = bulkhead ? Bulkhead.new(**bulkhead) : nil @rate_limiter = rate_limiter ? RateLimiter.new(**rate_limiter) : nil end |
Instance Attribute Details
#bulkhead ⇒ Bulkhead? (readonly)
20 21 22 |
# File 'lib/fizzy/resilience.rb', line 20 def bulkhead @bulkhead end |
#circuit_breaker ⇒ CircuitBreaker? (readonly)
17 18 19 |
# File 'lib/fizzy/resilience.rb', line 17 def circuit_breaker @circuit_breaker end |
#rate_limiter ⇒ RateLimiter? (readonly)
23 24 25 |
# File 'lib/fizzy/resilience.rb', line 23 def rate_limiter @rate_limiter end |
Instance Method Details
#call { ... } ⇒ Object
Wraps a block with all configured resilience patterns.
Execution order: rate_limiter -> bulkhead -> circuit_breaker -> block
40 41 42 43 44 45 |
# File 'lib/fizzy/resilience.rb', line 40 def call(&block) block = wrap_with_circuit_breaker(block) if @circuit_breaker block = wrap_with_bulkhead(block) if @bulkhead @rate_limiter&.acquire block.call end |