Class: JetstreamBridge::BackoffStrategy
- Inherits:
-
Object
- Object
- JetstreamBridge::BackoffStrategy
- Defined in:
- lib/jetstream_bridge/consumer/message_processor.rb
Overview
Simple exponential backoff strategy for transient failures.
Produces a bounded delay in seconds based on delivery count and error type. Transient errors (Timeout, IO) use a lower base for faster retries.
Constant Summary collapse
- TRANSIENT_ERRORS =
Error types considered transient (faster backoff)
[Timeout::Error, IOError].freeze
- MAX_EXPONENT =
6- MAX_DELAY =
60- MIN_DELAY =
1
Instance Method Summary collapse
-
#delay(deliveries, error) ⇒ Integer
Calculate delay for the next retry attempt.
Instance Method Details
#delay(deliveries, error) ⇒ Integer
Calculate delay for the next retry attempt.
61 62 63 64 65 66 |
# File 'lib/jetstream_bridge/consumer/message_processor.rb', line 61 def delay(deliveries, error) base = transient?(error) ? 0.5 : 2.0 power = [deliveries - 1, MAX_EXPONENT].min raw = (base * (2**power)).to_i raw.clamp(MIN_DELAY, MAX_DELAY) end |