Class: BarbequeClient::ExponentialRetry

Inherits:
Object
  • Object
show all
Defined in:
lib/barbeque_client/exponential_retry.rb

Constant Summary collapse

MAX_DELAY_SECONDS =
(ENV['BARBEQUE_MAX_RETRY_DELAY'] || 900).to_i

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(count) ⇒ ExponentialRetry

Returns a new instance of ExponentialRetry.

Parameters:

  • count (Integer)
    • Count of retry



12
13
14
# File 'lib/barbeque_client/exponential_retry.rb', line 12

def initialize(count)
  @count = count
end

Class Method Details

.exponential_backoff(count) ⇒ Integer

Returns:

  • (Integer)

    seconds



7
8
9
# File 'lib/barbeque_client/exponential_retry.rb', line 7

def self.exponential_backoff(count)
  (count ** 4) + 15 + (rand(30) * (count + 1))
end

Instance Method Details

#retry(message_id) ⇒ Object

Parameters:

  • message_id (String)


17
18
19
20
21
22
# File 'lib/barbeque_client/exponential_retry.rb', line 17

def retry(message_id)
  BarbequeClient.client.retry_execution(
    message_id:    message_id,
    delay_seconds: [delay_seconds, MAX_DELAY_SECONDS].min,
  )
end