Package org.apache.hc.client5.http.impl
Class DefaultHttpRequestRetryStrategy
- java.lang.Object
-
- org.apache.hc.client5.http.impl.DefaultHttpRequestRetryStrategy
-
- All Implemented Interfaces:
HttpRequestRetryStrategy
@Contract(threading=STATELESS) public class DefaultHttpRequestRetryStrategy extends java.lang.Object implements HttpRequestRetryStrategy
Default implementation of theHttpRequestRetryStrategyinterface.- Since:
- 5.0
-
-
Field Summary
Fields Modifier and Type Field Description private org.apache.hc.core5.util.TimeValuedefaultRetryIntervalRetry interval between subsequent retriesstatic DefaultHttpRequestRetryStrategyINSTANCEprivate intmaxRetriesMaximum number of allowed retriesprivate java.util.Set<java.lang.Class<? extends java.io.IOException>>nonRetriableIOExceptionClassesDerivedIOExceptionswhich shall not be retriedprivate java.util.Set<java.lang.Integer>retriableCodesHTTP status codes which shall be retried
-
Constructor Summary
Constructors Modifier Constructor Description DefaultHttpRequestRetryStrategy()Create the HTTP request retry strategy with a max retry count of 1, default retry interval of 1 second, and using the following list of non-retriable I/O exception classes:
InterruptedIOException UnknownHostException ConnectException ConnectionClosedException SSLException and retriable HTTP status codes:
SC_TOO_MANY_REQUESTS (429) SC_SERVICE_UNAVAILABLE (503)DefaultHttpRequestRetryStrategy(int maxRetries, org.apache.hc.core5.util.TimeValue defaultRetryInterval)Create the HTTP request retry strategy using the following list of non-retriable I/O exception classes:
InterruptedIOException UnknownHostException ConnectException ConnectionClosedException NoRouteToHostException SSLException and retriable HTTP status codes:
SC_TOO_MANY_REQUESTS (429) SC_SERVICE_UNAVAILABLE (503)protectedDefaultHttpRequestRetryStrategy(int maxRetries, org.apache.hc.core5.util.TimeValue defaultRetryInterval, java.util.Collection<java.lang.Class<? extends java.io.IOException>> clazzes, java.util.Collection<java.lang.Integer> codes)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.apache.hc.core5.util.TimeValuegetRetryInterval(org.apache.hc.core5.http.HttpResponse response, int execCount, org.apache.hc.core5.http.protocol.HttpContext context)Determines the retry interval between subsequent retries.protected booleanhandleAsIdempotent(org.apache.hc.core5.http.HttpRequest request)booleanretryRequest(org.apache.hc.core5.http.HttpRequest request, java.io.IOException exception, int execCount, org.apache.hc.core5.http.protocol.HttpContext context)Determines if a method should be retried after an I/O exception occurred during execution.booleanretryRequest(org.apache.hc.core5.http.HttpResponse response, int execCount, org.apache.hc.core5.http.protocol.HttpContext context)Determines if a method should be retried given the response from the target server.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.hc.client5.http.HttpRequestRetryStrategy
getRetryInterval
-
-
-
-
Field Detail
-
INSTANCE
public static final DefaultHttpRequestRetryStrategy INSTANCE
-
maxRetries
private final int maxRetries
Maximum number of allowed retries
-
defaultRetryInterval
private final org.apache.hc.core5.util.TimeValue defaultRetryInterval
Retry interval between subsequent retries
-
nonRetriableIOExceptionClasses
private final java.util.Set<java.lang.Class<? extends java.io.IOException>> nonRetriableIOExceptionClasses
DerivedIOExceptionswhich shall not be retried
-
retriableCodes
private final java.util.Set<java.lang.Integer> retriableCodes
HTTP status codes which shall be retried
-
-
Constructor Detail
-
DefaultHttpRequestRetryStrategy
protected DefaultHttpRequestRetryStrategy(int maxRetries, org.apache.hc.core5.util.TimeValue defaultRetryInterval, java.util.Collection<java.lang.Class<? extends java.io.IOException>> clazzes, java.util.Collection<java.lang.Integer> codes)
-
DefaultHttpRequestRetryStrategy
public DefaultHttpRequestRetryStrategy(int maxRetries, org.apache.hc.core5.util.TimeValue defaultRetryInterval)Create the HTTP request retry strategy using the following list of non-retriable I/O exception classes:
- InterruptedIOException
- UnknownHostException
- ConnectException
- ConnectionClosedException
- NoRouteToHostException
- SSLException
- SC_TOO_MANY_REQUESTS (429)
- SC_SERVICE_UNAVAILABLE (503)
- Parameters:
maxRetries- how many times to retry; 0 means no retriesdefaultRetryInterval- the default retry interval between subsequent retries if theRetry-Afterheader is not set or invalid.
-
DefaultHttpRequestRetryStrategy
public DefaultHttpRequestRetryStrategy()
Create the HTTP request retry strategy with a max retry count of 1, default retry interval of 1 second, and using the following list of non-retriable I/O exception classes:
- InterruptedIOException
- UnknownHostException
- ConnectException
- ConnectionClosedException
- SSLException
- SC_TOO_MANY_REQUESTS (429)
- SC_SERVICE_UNAVAILABLE (503)
-
-
Method Detail
-
retryRequest
public boolean retryRequest(org.apache.hc.core5.http.HttpRequest request, java.io.IOException exception, int execCount, org.apache.hc.core5.http.protocol.HttpContext context)Description copied from interface:HttpRequestRetryStrategyDetermines if a method should be retried after an I/O exception occurred during execution.- Specified by:
retryRequestin interfaceHttpRequestRetryStrategy- Parameters:
request- the request failed due to an I/O exceptionexception- the exception that occurredexecCount- the number of times this method has been unsuccessfully executedcontext- the context for the request execution- Returns:
trueif the request should be retried,falseotherwise
-
retryRequest
public boolean retryRequest(org.apache.hc.core5.http.HttpResponse response, int execCount, org.apache.hc.core5.http.protocol.HttpContext context)Description copied from interface:HttpRequestRetryStrategyDetermines if a method should be retried given the response from the target server.- Specified by:
retryRequestin interfaceHttpRequestRetryStrategy- Parameters:
response- the response from the target serverexecCount- the number of times this method has been unsuccessfully executedcontext- the context for the request execution- Returns:
trueif the request should be retried,falseotherwise
-
getRetryInterval
public org.apache.hc.core5.util.TimeValue getRetryInterval(org.apache.hc.core5.http.HttpResponse response, int execCount, org.apache.hc.core5.http.protocol.HttpContext context)Description copied from interface:HttpRequestRetryStrategyDetermines the retry interval between subsequent retries.- Specified by:
getRetryIntervalin interfaceHttpRequestRetryStrategy- Parameters:
response- the response from the target serverexecCount- the number of times this method has been unsuccessfully executedcontext- the context for the request execution- Returns:
- the retry interval between subsequent retries
-
handleAsIdempotent
protected boolean handleAsIdempotent(org.apache.hc.core5.http.HttpRequest request)
-
-