Package org.springframework.util.backoff
Class ExponentialBackOff
- java.lang.Object
- org.springframework.util.backoff.ExponentialBackOff
- All Implemented Interfaces:
BackOff
public class ExponentialBackOff extends Object implements BackOff
Implementation ofBackOffthat increases the back off period for each retry attempt. When the interval has reached themax interval, it is no longer increased. Stops retrying once themax elapsed timehas been reached.Example: The default interval is 2000L ms, the default multiplier is 1.5, and the default max interval is 30000L. For 10 attempts the sequence will be as follows:
request# back off 1 2000 2 3000 3 4500 4 6750 5 10125 6 15187 7 22780 8 30000 9 30000 10 30000
Note that the default max elapsed time is
Long.MAX_VALUE. UsesetMaxElapsedTime(long)to limit the maximum length of time that an instance should accumulate before returningBackOffExecution.STOP.- Since:
- 4.1
- Author:
- Stephane Nicoll
Field Summary
Fields Modifier and Type Field Description static longDEFAULT_INITIAL_INTERVALThe default initial interval.static longDEFAULT_MAX_ELAPSED_TIMEThe default maximum elapsed time.static longDEFAULT_MAX_INTERVALThe default maximum back off time.static doubleDEFAULT_MULTIPLIERThe default multiplier (increases the interval by 50%).
Constructor Summary
Constructors Constructor Description ExponentialBackOff()Create an instance with the default settings.ExponentialBackOff(long initialInterval, double multiplier)Create an instance with the supplied settings.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description longgetInitialInterval()Return the initial interval in milliseconds.longgetMaxElapsedTime()Return the maximum elapsed time in milliseconds after which a call toBackOffExecution.nextBackOff()returnsBackOffExecution.STOP.longgetMaxInterval()Return the maximum back off time.doublegetMultiplier()Return the value to multiply the current interval by for each retry attempt.voidsetInitialInterval(long initialInterval)The initial interval in milliseconds.voidsetMaxElapsedTime(long maxElapsedTime)The maximum elapsed time in milliseconds after which a call toBackOffExecution.nextBackOff()returnsBackOffExecution.STOP.voidsetMaxInterval(long maxInterval)The maximum back off time.voidsetMultiplier(double multiplier)The value to multiply the current interval by for each retry attempt.BackOffExecutionstart()Start a new back off execution.
Field Detail
DEFAULT_INITIAL_INTERVAL
public static final long DEFAULT_INITIAL_INTERVAL
The default initial interval.- See Also:
- Constant Field Values
DEFAULT_MULTIPLIER
public static final double DEFAULT_MULTIPLIER
The default multiplier (increases the interval by 50%).- See Also:
- Constant Field Values
DEFAULT_MAX_INTERVAL
public static final long DEFAULT_MAX_INTERVAL
The default maximum back off time.- See Also:
- Constant Field Values
DEFAULT_MAX_ELAPSED_TIME
public static final long DEFAULT_MAX_ELAPSED_TIME
The default maximum elapsed time.- See Also:
- Constant Field Values
Constructor Detail
ExponentialBackOff
public ExponentialBackOff()
Create an instance with the default settings.
ExponentialBackOff
public ExponentialBackOff(long initialInterval, double multiplier)
Create an instance with the supplied settings.- Parameters:
initialInterval- the initial interval in millisecondsmultiplier- the multiplier (should be greater than or equal to 1)
Method Detail
setInitialInterval
public void setInitialInterval(long initialInterval)
The initial interval in milliseconds.
getInitialInterval
public long getInitialInterval()
Return the initial interval in milliseconds.
setMultiplier
public void setMultiplier(double multiplier)
The value to multiply the current interval by for each retry attempt.
getMultiplier
public double getMultiplier()
Return the value to multiply the current interval by for each retry attempt.
setMaxInterval
public void setMaxInterval(long maxInterval)
The maximum back off time.
getMaxInterval
public long getMaxInterval()
Return the maximum back off time.
setMaxElapsedTime
public void setMaxElapsedTime(long maxElapsedTime)
The maximum elapsed time in milliseconds after which a call toBackOffExecution.nextBackOff()returnsBackOffExecution.STOP.
getMaxElapsedTime
public long getMaxElapsedTime()
Return the maximum elapsed time in milliseconds after which a call toBackOffExecution.nextBackOff()returnsBackOffExecution.STOP.
start
public BackOffExecution start()
Description copied from interface:BackOffStart a new back off execution.- Specified by:
startin interfaceBackOff- Returns:
- a fresh
BackOffExecutionready to be used