|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.http.impl.client.cache.ExponentialBackOffSchedulingStrategy
@Contract(threading=SAFE) public class ExponentialBackOffSchedulingStrategy
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().
| Field Summary | |
|---|---|
static long |
DEFAULT_BACK_OFF_RATE
|
static long |
DEFAULT_INITIAL_EXPIRY_IN_MILLIS
|
static long |
DEFAULT_MAX_EXPIRY_IN_MILLIS
|
| Constructor Summary | |
|---|---|
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 | ||
|---|---|---|
protected long |
calculateDelayInMillis(int consecutiveFailedAttempts)
|
|
protected static long |
checkNotNegative(String parameterName,
long value)
Deprecated. Use Args.notNegative(long, String) |
|
protected static
|
checkNotNull(String parameterName,
T value)
Deprecated. Use Args.notNull(Object, String) |
|
void |
close()
|
|
long |
getBackOffRate()
|
|
long |
getInitialExpiryInMillis()
|
|
long |
getMaxExpiryInMillis()
|
|
void |
schedule(AsynchronousValidationRequest revalidationRequest)
Schedule an AsynchronousValidationRequest to be executed. |
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final long DEFAULT_BACK_OFF_RATE
public static final long DEFAULT_INITIAL_EXPIRY_IN_MILLIS
public static final long DEFAULT_MAX_EXPIRY_IN_MILLIS
| Constructor Detail |
|---|
public ExponentialBackOffSchedulingStrategy(CacheConfig cacheConfig)
cacheConfig - the thread pool configuration to be used; not nullCacheConfig.getAsynchronousWorkersMax(),
DEFAULT_BACK_OFF_RATE,
DEFAULT_INITIAL_EXPIRY_IN_MILLIS,
DEFAULT_MAX_EXPIRY_IN_MILLIS
public ExponentialBackOffSchedulingStrategy(CacheConfig cacheConfig,
long backOffRate,
long initialExpiryInMillis,
long maxExpiryInMillis)
cacheConfig - the thread pool configuration to be used; not nullbackOffRate - 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 negativeCacheConfig.getAsynchronousWorkersMax(),
ExponentialBackOffSchedulingStrategy| Method Detail |
|---|
public void schedule(AsynchronousValidationRequest revalidationRequest)
SchedulingStrategyAsynchronousValidationRequest to be executed.
schedule in interface SchedulingStrategyrevalidationRequest - the request to be executed; not nullpublic void close()
close in interface Closeablepublic long getBackOffRate()
public long getInitialExpiryInMillis()
public long getMaxExpiryInMillis()
protected long calculateDelayInMillis(int consecutiveFailedAttempts)
@Deprecated
protected static <T> T checkNotNull(String parameterName,
T value)
Args.notNull(Object, String)
@Deprecated
protected static long checkNotNegative(String parameterName,
long value)
Args.notNegative(long, String)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||