Annotation Interface Retry
@Inherited
@Documented
@Retention(RUNTIME)
@Target({METHOD,TYPE})
@InterceptorBinding
public @interface Retry
The retry annotation to define the number of retries. Any invalid config value causes
FaultToleranceDefinitionException
.
When a method returns and the retry policy is present, the following rules are applied:
- If the method returns normally (doesn't throw), the result is simply returned.
- Otherwise, if the thrown object is assignable to any value in the
abortOn()
parameter, the thrown object is rethrown. - Otherwise, if the thrown object is assignable to any value in the
retryOn()
parameter, the method call is retried. - Otherwise the thrown object is rethrown.
Throwable
which is not an Error
or Exception
, non-portable behavior results.-
Optional Element Summary
Modifier and TypeOptional ElementDescriptionThe list of exception types that should not trigger a retry.long
The delay between retries.The unit fordelay()
.The duration unit formaxDuration()
.long
Set the jitter to randomly vary retry delays for.The delay unit forjitter()
.long
The max duration.int
The max number of the retries.The list of exception types that should trigger a retry.
-
Element Details
-
maxRetries
int maxRetriesThe max number of the retries.- Returns:
- the max number of retries. -1 means retry forever. The value must be greater than or equal to -1.
- Default:
- 3
-
delay
long delayThe delay between retries. Defaults to 0. The value must be greater than or equal to 0.- Returns:
- the delay time
- Default:
- 0L
-
delayUnit
ChronoUnit delayUnitThe unit fordelay()
. Defaults toChronoUnit.MILLIS
if not set.- Returns:
- the delay unit
- Default:
- MILLIS
-
maxDuration
long maxDurationThe max duration. The max duration must be greater than the delay duration if set. 0 means not set.- Returns:
- the maximum duration to perform retries for
- Default:
- 180000L
-
durationUnit
ChronoUnit durationUnitThe duration unit formaxDuration()
. Defaults toChronoUnit.MILLIS
if not set.- Returns:
- the duration unit
- Default:
- MILLIS
-
jitter
long jitterSet the jitter to randomly vary retry delays for. The value must be greater than or equals to 0. 0 means not set.
The effective delay will be [delay - jitter, delay + jitter] and always greater than or equal to 0. Negative effective delays will be 0.- Returns:
- the jitter that randomly vary retry delays by. e.g. a jitter of 200 milliseconds will randomly add between -200 and 200 milliseconds to each retry delay.
- Default:
- 200L
-
jitterDelayUnit
ChronoUnit jitterDelayUnitThe delay unit forjitter()
. Defaults toChronoUnit.MILLIS
if not set.- Returns:
- the jitter delay unit
- Default:
- MILLIS
-
retryOn
The list of exception types that should trigger a retry.Note that if a method throws a
Throwable
which is not anError
orException
, non-portable behavior results.- Returns:
- the exception types on which to retry
- Default:
- {java.lang.Exception.class}
-
abortOn
The list of exception types that should not trigger a retry.This list takes priority over the types listed in
retryOn()
.Note that if a method throws a
Throwable
which is not anError
orException
, non-portable behavior results.- Returns:
- the exception types on which to abort (not retry)
- Default:
- {}
-