Sha256: b7ea995600b357f7b2d733f282801cf88b88223acff99177cf9b6e4a3c83ce0d
Contents?: true
Size: 1.09 KB
Versions: 2
Compression:
Stored size: 1.09 KB
Contents
module EventSourcery module EventProcessing module ErrorHandlers class ExponentialBackoffRetry include EventSourcery::EventProcessing::ErrorHandlers::ErrorHandler DEFAULT_RETRY_INVERAL = 1 MAX_RETRY_INVERVAL = 64 def initialize(processor_name:) @processor_name = processor_name @retry_interval = DEFAULT_RETRY_INVERAL end def with_error_handling yield rescue => error report_error(error) update_retry_interval(error) sleep(@retry_interval) retry end private def update_retry_interval(error) if error.instance_of?(EventSourcery::EventProcessingError) if @error_event_uuid == error.event.uuid @retry_interval *= 2 if @retry_interval < MAX_RETRY_INVERVAL else @error_event_uuid = error.event.uuid @retry_interval = DEFAULT_RETRY_INVERAL end else @retry_interval = DEFAULT_RETRY_INVERAL end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems