-
- All Implemented Interfaces:
-
okhttp3.Interceptor
public final class RetryInterceptor implements InterceptorOkHttp interceptor that implements exponential backoff retry logic for transient failures.
This interceptor automatically retries failed requests with increasing delays between attempts, using jitter to prevent thundering herd problems when many clients retry simultaneously.
Base delay starts at initialDelayMs (default: 1 second)
Each retry doubles the delay (exponential backoff)
Jitter of ±25% is added to prevent synchronized retries
Maximum delay is capped at maxDelayMs (default: 30 seconds)
Maximum of maxRetries attempts (default: 3)
Network errors: IOException, SocketTimeoutException, UnknownHostException
Server errors: HTTP 500, 502, 503, 504 (server overload/maintenance)
Rate limiting: HTTP 429 (respects Retry-After header if present)
Client errors: HTTP 4xx (except 429) - these indicate bugs, not transient failures
Authentication errors: HTTP 401, 403 - require configuration fix
Successful responses: HTTP 2xx
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public classRetryInterceptor.Companion
-
Constructor Summary
Constructors Constructor Description RetryInterceptor(Integer maxRetries, Long initialDelayMs, Long maxDelayMs, Double jitterFactor)
-
Method Summary
Modifier and Type Method Description Responseintercept(Interceptor.Chain chain)-
-
Constructor Detail
-
RetryInterceptor
RetryInterceptor(Integer maxRetries, Long initialDelayMs, Long maxDelayMs, Double jitterFactor)
- Parameters:
maxRetries- Maximum number of retry attempts (default: 3)initialDelayMs- Initial delay before first retry in milliseconds (default: 1000)maxDelayMs- Maximum delay between retries in milliseconds (default: 30000)jitterFactor- Randomization factor for delay (0.0 to 1.0, default: 0.
-
-
Method Detail
-
intercept
Response intercept(Interceptor.Chain chain)
-
-
-
-