Class DefaultHttpRequestRetryStrategy

java.lang.Object
org.apache.hc.client5.http.impl.DefaultHttpRequestRetryStrategy
All Implemented Interfaces:
HttpRequestRetryStrategy

@Contract(threading=STATELESS) public class DefaultHttpRequestRetryStrategy extends Object implements HttpRequestRetryStrategy
Default implementation of the HttpRequestRetryStrategy interface.
Since:
5.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final org.apache.hc.core5.util.TimeValue
    Retry interval between subsequent retries
     
    private final int
    Maximum number of allowed retries
    private final Set<Class<? extends IOException>>
    Derived IOExceptions which shall not be retried
    private final Set<Integer>
    HTTP status codes which shall be retried
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
     
    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)
    protected
    DefaultHttpRequestRetryStrategy(int maxRetries, org.apache.hc.core5.util.TimeValue defaultRetryInterval, Collection<Class<? extends IOException>> clazzes, Collection<Integer> codes)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.apache.hc.core5.util.TimeValue
    getRetryInterval(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 boolean
    handleAsIdempotent(org.apache.hc.core5.http.HttpRequest request)
     
    boolean
    retryRequest(org.apache.hc.core5.http.HttpRequest request, 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.
    boolean
    retryRequest(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
  • Field Details

    • 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 Set<Class<? extends IOException>> nonRetriableIOExceptionClasses
      Derived IOExceptions which shall not be retried
    • retriableCodes

      private final Set<Integer> retriableCodes
      HTTP status codes which shall be retried
  • Constructor Details

    • DefaultHttpRequestRetryStrategy

      protected DefaultHttpRequestRetryStrategy(int maxRetries, org.apache.hc.core5.util.TimeValue defaultRetryInterval, Collection<Class<? extends IOException>> clazzes, Collection<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
      and retriable HTTP status codes:
      • SC_TOO_MANY_REQUESTS (429)
      • SC_SERVICE_UNAVAILABLE (503)
      Parameters:
      maxRetries - how many times to retry; 0 means no retries
      defaultRetryInterval - the default retry interval between subsequent retries if the Retry-After header 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
      and retriable HTTP status codes:
      • SC_TOO_MANY_REQUESTS (429)
      • SC_SERVICE_UNAVAILABLE (503)
  • Method Details

    • retryRequest

      public boolean retryRequest(org.apache.hc.core5.http.HttpRequest request, IOException exception, int execCount, org.apache.hc.core5.http.protocol.HttpContext context)
      Description copied from interface: HttpRequestRetryStrategy
      Determines if a method should be retried after an I/O exception occurred during execution.
      Specified by:
      retryRequest in interface HttpRequestRetryStrategy
      Parameters:
      request - the request failed due to an I/O exception
      exception - the exception that occurred
      execCount - the number of times this method has been unsuccessfully executed
      context - the context for the request execution
      Returns:
      true if the request should be retried, false otherwise
    • 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: HttpRequestRetryStrategy
      Determines if a method should be retried given the response from the target server.
      Specified by:
      retryRequest in interface HttpRequestRetryStrategy
      Parameters:
      response - the response from the target server
      execCount - the number of times this method has been unsuccessfully executed
      context - the context for the request execution
      Returns:
      true if the request should be retried, false otherwise
    • 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: HttpRequestRetryStrategy
      Determines the retry interval between subsequent retries.
      Specified by:
      getRetryInterval in interface HttpRequestRetryStrategy
      Parameters:
      response - the response from the target server
      execCount - the number of times this method has been unsuccessfully executed
      context - the context for the request execution
      Returns:
      the retry interval between subsequent retries
    • handleAsIdempotent

      protected boolean handleAsIdempotent(org.apache.hc.core5.http.HttpRequest request)