public abstract class RetrySettings extends Object implements Serializable
The intent of these settings is to be used with a call to a remote server, which could either fail (and return an error code) or not respond (and cause a timeout). When there is a failure or timeout, the logic should keep trying until the total timeout has passed.
The "total timeout" parameter has ultimate control over how long the logic should keep trying the remote call until it gives up completely. The higher the total timeout, the more retries can be attempted. The other settings are considered more advanced.
Retry delay and timeout start at specific values, and are tracked separately from each other. The very first call (before any retries) will use the initial timeout.
If the last remote call is a failure, then the retrier will wait for the current retry delay before attempting another call, and then the retry delay will be multiplied by the retry delay multiplier for the next failure. The timeout will not be affected, except in the case where the timeout would result in a deadline past the total timeout; in that circumstance, a new timeout value is computed which will terminate the call when the total time is up.
If the last remote call is a timeout, then the retrier will compute a new timeout and make another call. The new timeout is computed by multiplying the current timeout by the timeout multiplier, but if that results in a deadline after the total timeout, then a new timeout value is computed which will terminate the call when the total time is up.
| Modifier and Type | Class and Description |
|---|---|
static class |
RetrySettings.Builder
A base builder class for
RetrySettings. |
| Constructor and Description |
|---|
RetrySettings() |
| Modifier and Type | Method and Description |
|---|---|
abstract org.threeten.bp.Duration |
getInitialRetryDelay()
The InitialRetryDelay parameter controls the delay before the first retry.
|
abstract org.threeten.bp.Duration |
getInitialRpcTimeout()
The InitialRpcTimeout parameter controls the timeout for the initial RPC.
|
abstract int |
getMaxAttempts()
MaxAttempts defines the maximum number of attempts to perform.
|
abstract org.threeten.bp.Duration |
getMaxRetryDelay()
The MaxRetryDelay puts a limit on the value of the retry delay, so that the
RetryDelayMultiplier can't increase the retry delay higher than this amount.
|
abstract org.threeten.bp.Duration |
getMaxRpcTimeout()
The MaxRpcTimeout puts a limit on the value of the RPC timeout, so that the
RpcTimeoutMultiplier can't increase the RPC timeout higher than this amount.
|
abstract double |
getRetryDelayMultiplier()
The RetryDelayMultiplier controls the change in retry delay.
|
abstract double |
getRpcTimeoutMultiplier()
The RpcTimeoutMultiplier controls the change in RPC timeout.
|
abstract org.threeten.bp.Duration |
getTotalTimeout()
The TotalTimeout parameter has ultimate control over how long the logic should keep trying the
remote call until it gives up completely.
|
static RetrySettings.Builder |
newBuilder() |
RetrySettings.Builder |
toBuilder() |
public abstract org.threeten.bp.Duration getTotalTimeout()
public abstract org.threeten.bp.Duration getInitialRetryDelay()
public abstract double getRetryDelayMultiplier()
public abstract org.threeten.bp.Duration getMaxRetryDelay()
public abstract int getMaxAttempts()
public abstract org.threeten.bp.Duration getInitialRpcTimeout()
public abstract double getRpcTimeoutMultiplier()
public abstract org.threeten.bp.Duration getMaxRpcTimeout()
public static RetrySettings.Builder newBuilder()
public RetrySettings.Builder toBuilder()