Current section

Files

Jump to
amqpx lib amqp backoff jittered.ex
Raw

lib/amqp/backoff/jittered.ex

defmodule Amqpx.Backoff.Jittered do
@moduledoc """
Implements a jittered backoff strategy
"""
@spec backoff(
attempt :: number(),
base_backoff_ms :: number(),
max_backoff_ms :: number()
) :: pos_integer()
def backoff(attempt, base_backoff_ms, max_backoff_ms) do
(base_backoff_ms * :math.pow(2, attempt))
|> min(max_backoff_ms)
|> trunc
|> :rand.uniform()
end
end