Class ExponentialBackOffSchedulingStrategy
- java.lang.Object
-
- org.apache.http.impl.client.cache.ExponentialBackOffSchedulingStrategy
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,SchedulingStrategy
@Contract(threading=SAFE) public class ExponentialBackOffSchedulingStrategy extends java.lang.Object implements SchedulingStrategy
An implementation that backs off exponentially based on the number of consecutive failed attempts stored in theAsynchronousValidationRequest. 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 (=The following equation is used to calculate the delay for a specific revalidation request: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())delay =The resulting delay won't exceedgetInitialExpiryInMillis()* Math.pow(getBackOffRate(),AsynchronousValidationRequest.getConsecutiveFailedAttempts()- 1))getMaxExpiryInMillis().- Since:
- 4.3
-
-
Field Summary
Fields Modifier and Type Field Description static longDEFAULT_BACK_OFF_RATEstatic longDEFAULT_INITIAL_EXPIRY_IN_MILLISstatic longDEFAULT_MAX_EXPIRY_IN_MILLIS
-
Constructor Summary
Constructors Constructor Description ExponentialBackOffSchedulingStrategy(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()longgetBackOffRate()longgetInitialExpiryInMillis()longgetMaxExpiryInMillis()voidschedule(AsynchronousValidationRequest revalidationRequest)Schedule anAsynchronousValidationRequestto be executed.
-
-
-
Field Detail
-
DEFAULT_BACK_OFF_RATE
public static final long DEFAULT_BACK_OFF_RATE
- See Also:
- Constant Field Values
-
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 Detail
-
ExponentialBackOffSchedulingStrategy
public ExponentialBackOffSchedulingStrategy(CacheConfig cacheConfig)
Create a new scheduling strategy using a fixed pool of worker threads.- Parameters:
cacheConfig- the thread pool configuration to be used; notnull- See Also:
CacheConfig.getAsynchronousWorkersMax(),DEFAULT_BACK_OFF_RATE,DEFAULT_INITIAL_EXPIRY_IN_MILLIS,DEFAULT_MAX_EXPIRY_IN_MILLIS
-
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:
CacheConfig.getAsynchronousWorkersMax(),ExponentialBackOffSchedulingStrategy
-
-
Method Detail
-
schedule
public void schedule(AsynchronousValidationRequest revalidationRequest)
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 interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
getBackOffRate
public long getBackOffRate()
-
getInitialExpiryInMillis
public long getInitialExpiryInMillis()
-
getMaxExpiryInMillis
public long getMaxExpiryInMillis()
-
-