public class ExponentialRandomBackOffPolicy extends ExponentialBackOffPolicy
ExponentialBackOffPolicy
that chooses a random multiple of the interval that would come from a simple
deterministic exponential. The random multiple is uniformly distributed between 1 and
the deterministic multiplier (so in practice the interval is somewhere between the next
and next but one intervals in the deterministic case).
This has shown to at least be useful in testing scenarios where excessive contention is
generated by the test needing many retries. In test, usually threads are started at the
same time, and thus stomp together onto the next interval. Using this
BackOffPolicy can help avoid that scenario.
Example: initialInterval = 50 multiplier = 2.0 maxInterval = 3000 numRetries = 5
ExponentialBackOffPolicy yields: [50, 100, 200, 400, 800]
ExponentialRandomBackOffPolicy may yield [76, 151, 304, 580, 901] or [53, 190,
267, 451, 815]DEFAULT_INITIAL_INTERVAL, DEFAULT_MAX_INTERVAL, DEFAULT_MULTIPLIER, logger| Constructor and Description |
|---|
ExponentialRandomBackOffPolicy() |
| Modifier and Type | Method and Description |
|---|---|
protected ExponentialBackOffPolicy |
newInstance() |
BackOffContext |
start(RetryContext context)
Returns a new instance of
BackOffContext,
seeded with this policies settings. |
backOff, cloneValues, getInitialInterval, getMaxInterval, getMultiplier, setInitialInterval, setMaxInterval, setMultiplier, setSleeper, toString, withSleeperpublic BackOffContext start(RetryContext context)
BackOffContext,
seeded with this policies settings.start in interface BackOffPolicystart in class ExponentialBackOffPolicycontext - the RetryContext context, which might contain information
that we can use to decide how to proceed.BackOffContext or 'null'.protected ExponentialBackOffPolicy newInstance()
newInstance in class ExponentialBackOffPolicyCopyright © 2018 SpringSource. All rights reserved.