Class: Operaton::Bpm::Client::Backoff::ExponentialErrorBackoffStrategy

Inherits:
Object
  • Object
show all
Includes:
ErrorAwareBackoffStrategy
Defined in:
lib/operaton/bpm/client/backoff/exponential_error_backoff_strategy.rb

Overview

Mirrors org.operaton.bpm.client.backoff.ExponentialErrorBackoffStrategy

Instance Method Summary collapse

Constructor Details

#initialize(init_time = 500, factor = 2, max_time = 60_000) ⇒ ExponentialErrorBackoffStrategy

Returns a new instance of ExponentialErrorBackoffStrategy.



13
14
15
16
17
18
# File 'lib/operaton/bpm/client/backoff/exponential_error_backoff_strategy.rb', line 13

def initialize(init_time = 500, factor = 2, max_time = 60_000)
  @init_time = init_time
  @factor = factor
  @level = 0
  @max_time = max_time
end

Instance Method Details

#calculate_backoff_timeObject



28
29
30
31
32
33
# File 'lib/operaton/bpm/client/backoff/exponential_error_backoff_strategy.rb', line 28

def calculate_backoff_time
  return 0 if @level.zero?

  backoff_time = (@init_time * (@factor**(@level - 1))).to_i
  [backoff_time, @max_time].min
end

#reconfigure(_external_tasks, error = nil) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/operaton/bpm/client/backoff/exponential_error_backoff_strategy.rb', line 20

def reconfigure(_external_tasks, error = nil)
  if error
    @level += 1
  else
    @level = 0
  end
end