Class ExponentialBackOffSchedulingStrategy
java.lang.Object
org.apache.hc.client5.http.impl.schedule.ExponentialBackOffSchedulingStrategy
- All Implemented Interfaces:
SchedulingStrategy
@Contract(threading=STATELESS)
public class ExponentialBackOffSchedulingStrategy
extends Object
implements SchedulingStrategy
An implementation that backs off exponentially based on the number of
consecutive failed attempts. It uses the following defaults:
no delay in case it was never tried or didn't fail so far
6 s delay for one failed attempt (= getInitialExpiry())
60 s delay for two failed attempts
10 min delay for three failed attempts
100 min delay for four failed attempts
~16 h delay for five failed attempts
24 h delay for six or more failed attempts (= getMaxExpiry())
The following equation is used to calculate the delay for a specific pending operation:
delay = getInitialExpiry() * Math.pow(getBackOffRate(),
consecutiveFailedAttempts - 1))
The resulting delay won't exceed getMaxExpiry().- Since:
- 5.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final longstatic final longstatic final org.apache.hc.core5.util.TimeValuestatic final org.apache.hc.core5.util.TimeValueprivate final org.apache.hc.core5.util.TimeValueprivate final org.apache.hc.core5.util.TimeValue -
Constructor Summary
ConstructorsConstructorDescriptionExponentialBackOffSchedulingStrategy(long backOffRate) ExponentialBackOffSchedulingStrategy(long backOffRate, org.apache.hc.core5.util.TimeValue initialExpiry) ExponentialBackOffSchedulingStrategy(long backOffRate, org.apache.hc.core5.util.TimeValue initialExpiry, org.apache.hc.core5.util.TimeValue maxExpiry) -
Method Summary
Modifier and TypeMethodDescriptionprotected org.apache.hc.core5.util.TimeValuecalculateDelay(int consecutiveFailedAttempts) longorg.apache.hc.core5.util.TimeValueorg.apache.hc.core5.util.TimeValueorg.apache.hc.core5.util.TimeValueschedule(int attemptNumber) Schedules execution time for an operation.
-
Field Details
-
DEFAULT_BACK_OFF_RATE
public static final long DEFAULT_BACK_OFF_RATE- See Also:
-
DEFAULT_INITIAL_EXPIRY
public static final org.apache.hc.core5.util.TimeValue DEFAULT_INITIAL_EXPIRY -
DEFAULT_MAX_EXPIRY
public static final org.apache.hc.core5.util.TimeValue DEFAULT_MAX_EXPIRY -
backOffRate
private final long backOffRate -
initialExpiry
private final org.apache.hc.core5.util.TimeValue initialExpiry -
maxExpiry
private final org.apache.hc.core5.util.TimeValue maxExpiry
-
-
Constructor Details
-
ExponentialBackOffSchedulingStrategy
public ExponentialBackOffSchedulingStrategy(long backOffRate, org.apache.hc.core5.util.TimeValue initialExpiry, org.apache.hc.core5.util.TimeValue maxExpiry) -
ExponentialBackOffSchedulingStrategy
public ExponentialBackOffSchedulingStrategy(long backOffRate, org.apache.hc.core5.util.TimeValue initialExpiry) -
ExponentialBackOffSchedulingStrategy
public ExponentialBackOffSchedulingStrategy(long backOffRate) -
ExponentialBackOffSchedulingStrategy
public ExponentialBackOffSchedulingStrategy()
-
-
Method Details
-
schedule
public org.apache.hc.core5.util.TimeValue schedule(int attemptNumber) Description copied from interface:SchedulingStrategySchedules execution time for an operation.- Specified by:
schedulein interfaceSchedulingStrategy
-
getBackOffRate
public long getBackOffRate() -
getInitialExpiry
public org.apache.hc.core5.util.TimeValue getInitialExpiry() -
getMaxExpiry
public org.apache.hc.core5.util.TimeValue getMaxExpiry() -
calculateDelay
protected org.apache.hc.core5.util.TimeValue calculateDelay(int consecutiveFailedAttempts)
-