Class: KubeMQ::ReconnectPolicy

Inherits:
Object
  • Object
show all
Defined in:
lib/kubemq/configuration.rb

Overview

Reconnection policy with exponential backoff and jitter.

When enabled (default), the transport automatically reconnects after transient failures. The delay between attempts is computed as:

delay = min(base_interval * multiplier^(attempt-1), max_delay) +/- jitter

Examples:

Custom reconnect policy

policy = KubeMQ::ReconnectPolicy.new(
  base_interval: 2.0,
  max_delay: 60.0,
  max_attempts: 10
)

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(enabled: true, base_interval: 1.0, multiplier: 2.0, max_delay: 30.0, jitter_percent: 0.25, max_attempts: 0) ⇒ ReconnectPolicy

Creates a new reconnect policy.

Parameters:

  • enabled (Boolean) (defaults to: true)

    whether auto-reconnect is enabled (default: true)

  • base_interval (Float) (defaults to: 1.0)

    initial delay in seconds (default: 1.0)

  • multiplier (Float) (defaults to: 2.0)

    backoff multiplier (default: 2.0)

  • max_delay (Float) (defaults to: 30.0)

    maximum delay cap in seconds (default: 30.0)

  • jitter_percent (Float) (defaults to: 0.25)

    jitter fraction of the computed delay (default: 0.25)

  • max_attempts (Integer) (defaults to: 0)

    maximum attempts; 0 for unlimited (default: 0)



127
128
129
130
131
132
133
134
135
# File 'lib/kubemq/configuration.rb', line 127

def initialize(enabled: true, base_interval: 1.0, multiplier: 2.0, max_delay: 30.0,
               jitter_percent: 0.25, max_attempts: 0)
  @enabled = enabled
  @base_interval = Float(base_interval)
  @multiplier = Float(multiplier)
  @max_delay = Float(max_delay)
  @jitter_percent = Float(jitter_percent)
  @max_attempts = Integer(max_attempts)
end

Instance Attribute Details

#base_intervalFloat

Returns initial delay between reconnect attempts in seconds (default: 1.0).

Returns:

  • (Float)

    initial delay between reconnect attempts in seconds (default: 1.0)



117
# File 'lib/kubemq/configuration.rb', line 117

attr_accessor :enabled, :base_interval, :multiplier, :max_delay, :jitter_percent, :max_attempts

#enabledBoolean

Returns whether auto-reconnect is enabled (default: true).

Returns:

  • (Boolean)

    whether auto-reconnect is enabled (default: true)



117
118
119
# File 'lib/kubemq/configuration.rb', line 117

def enabled
  @enabled
end

#jitter_percentFloat

Returns jitter as a fraction of the computed delay (default: 0.25).

Returns:

  • (Float)

    jitter as a fraction of the computed delay (default: 0.25)



117
# File 'lib/kubemq/configuration.rb', line 117

attr_accessor :enabled, :base_interval, :multiplier, :max_delay, :jitter_percent, :max_attempts

#max_attemptsInteger

Returns maximum reconnect attempts; 0 means unlimited (default: 0).

Returns:

  • (Integer)

    maximum reconnect attempts; 0 means unlimited (default: 0)



117
# File 'lib/kubemq/configuration.rb', line 117

attr_accessor :enabled, :base_interval, :multiplier, :max_delay, :jitter_percent, :max_attempts

#max_delayFloat

Returns maximum delay cap in seconds (default: 30.0).

Returns:

  • (Float)

    maximum delay cap in seconds (default: 30.0)



117
# File 'lib/kubemq/configuration.rb', line 117

attr_accessor :enabled, :base_interval, :multiplier, :max_delay, :jitter_percent, :max_attempts

#multiplierFloat

Returns multiplier applied to delay after each attempt (default: 2.0).

Returns:

  • (Float)

    multiplier applied to delay after each attempt (default: 2.0)



117
# File 'lib/kubemq/configuration.rb', line 117

attr_accessor :enabled, :base_interval, :multiplier, :max_delay, :jitter_percent, :max_attempts