Class ExponentialBackOffSchedulingStrategy
java.lang.Object
org.apache.http.impl.client.cache.ExponentialBackOffSchedulingStrategy
- All Implemented Interfaces:
Closeable,AutoCloseable,SchedulingStrategy
@Contract(threading=SAFE)
public class ExponentialBackOffSchedulingStrategy
extends Object
implements SchedulingStrategy
An implementation that backs off exponentially based on the number of
consecutive failed attempts stored in the
AsynchronousValidationRequest. It uses the following defaults:
no delay in case it was never tried or didn't fail so far
6 secs delay for one failed attempt (= getInitialExpiryInMillis())
60 secs delay for two failed attempts
10 mins delay for three failed attempts
100 mins delay for four failed attempts
~16 hours delay for five failed attempts
24 hours delay for six or more failed attempts (= getMaxExpiryInMillis())
The following equation is used to calculate the delay for a specific revalidation request:
delay = getInitialExpiryInMillis() * Math.pow(getBackOffRate(),
AsynchronousValidationRequest.getConsecutiveFailedAttempts() - 1))
The resulting delay won't exceed getMaxExpiryInMillis().- Since:
- 4.3
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final longstatic final longstatic final long -
Constructor Summary
ConstructorsConstructorDescriptionExponentialBackOffSchedulingStrategy(CacheConfig cacheConfig) Create a new scheduling strategy using a fixed pool of worker threads.ExponentialBackOffSchedulingStrategy(CacheConfig cacheConfig, long backOffRate, long initialExpiryInMillis, long maxExpiryInMillis) Create a new scheduling strategy by using a fixed pool of worker threads and the given parameters to calculated the delay. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()longlonglongvoidschedule(AsynchronousValidationRequest revalidationRequest) Schedule anAsynchronousValidationRequestto be executed.
-
Field Details
-
DEFAULT_BACK_OFF_RATE
public static final long DEFAULT_BACK_OFF_RATE- See Also:
-
DEFAULT_INITIAL_EXPIRY_IN_MILLIS
public static final long DEFAULT_INITIAL_EXPIRY_IN_MILLIS -
DEFAULT_MAX_EXPIRY_IN_MILLIS
public static final long DEFAULT_MAX_EXPIRY_IN_MILLIS
-
-
Constructor Details
-
ExponentialBackOffSchedulingStrategy
Create a new scheduling strategy using a fixed pool of worker threads.- Parameters:
cacheConfig- the thread pool configuration to be used; notnull- See Also:
-
ExponentialBackOffSchedulingStrategy
public ExponentialBackOffSchedulingStrategy(CacheConfig cacheConfig, long backOffRate, long initialExpiryInMillis, long maxExpiryInMillis) Create a new scheduling strategy by using a fixed pool of worker threads and the given parameters to calculated the delay.- Parameters:
cacheConfig- the thread pool configuration to be used; notnullbackOffRate- the back off rate to be used; not negativeinitialExpiryInMillis- the initial expiry in milli seconds; not negativemaxExpiryInMillis- the upper limit of the delay in milli seconds; not negative- See Also:
-
-
Method Details
-
schedule
Description copied from interface:SchedulingStrategySchedule anAsynchronousValidationRequestto be executed.- Specified by:
schedulein interfaceSchedulingStrategy- Parameters:
revalidationRequest- the request to be executed; notnull
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable
-
getBackOffRate
public long getBackOffRate() -
getInitialExpiryInMillis
public long getInitialExpiryInMillis() -
getMaxExpiryInMillis
public long getMaxExpiryInMillis()
-