org.eclipse.microprofile.faulttolerance

## Annotation Type Retry

    @Inherited
     @Documented
     @Retention(value=RUNTIME)
     @Target(value={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:

1. If the method returns normally (doesn't throw), the result is simply returned.
2. Otherwise, if the thrown object is assignable to any value in the `abortOn()` parameter, the thrown object is rethrown.
3. Otherwise, if the thrown object is assignable to any value in the `retryOn()` parameter, the method call is retried.
4. Otherwise the thrown object is rethrown.

If a method throws a `Throwable` which is not an `Error` or `Exception`, non-portable behavior results.

Author:
  Emily Jiang, John Ament
See Also:
  `maxRetries()`, `delay()`, `delayUnit()`, `maxDuration()`, `durationUnit()`, `jitter()`, `jitterDelayUnit()`, `retryOn()`, `abortOn()`

### Optional Element Summary

Optional Elements
`Class<? extends Throwable>[]` `abortOn` The list of exception types that should not trigger a retry.
`long` `delay` The delay between retries.
`ChronoUnit` `delayUnit` The unit for `delay()`.
`ChronoUnit` `durationUnit` The duration unit for `maxDuration()`.
`long` `jitter` Set the jitter to randomly vary retry delays for.
`ChronoUnit` `jitterDelayUnit` The delay unit for `jitter()`.
`long` `maxDuration` The max duration.
`int` `maxRetries` The max number of the retries.
`Class<? extends Throwable>[]` `retryOn` The list of exception types that should trigger a retry.

### Element Detail

#### maxRetries

    public abstract int maxRetries

The 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

    public abstract long delay

The delay between retries. Defaults to 0. The value must be greater than or equal to 0.

Returns:
  the delay time

Default:
  0L

#### delayUnit

    public abstract ChronoUnit delayUnit

The unit for `delay()`. Defaults to `ChronoUnit.MILLIS` if not set.

Returns:
  the delay unit

Default:
  java.time.temporal.ChronoUnit.MILLIS

#### maxDuration

    public abstract long maxDuration

The 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

    public abstract ChronoUnit durationUnit

The duration unit for `maxDuration()`. Defaults to `ChronoUnit.MILLIS` if not set.

Returns:
  the duration unit

Default:
  java.time.temporal.ChronoUnit.MILLIS

#### jitter

    public abstract long jitter

Set 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

    public abstract ChronoUnit jitterDelayUnit

The delay unit for `jitter()`. Defaults to `ChronoUnit.MILLIS` if not set.

Returns:
  the jitter delay unit

Default:
  java.time.temporal.ChronoUnit.MILLIS

#### retryOn

    public abstract Class<? extends Throwable>[] retryOn

The list of exception types that should trigger a retry.

Note that if a method throws a `Throwable` which is not an `Error` or `Exception`, non-portable behavior results.

Returns:
  the exception types on which to retry

Default:
  java.lang.Exception.class

#### abortOn

    public abstract Class<? extends Throwable>[] 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 an `Error` or `Exception`, non-portable behavior results.

Returns:
  the exception types on which to abort (not retry)

Default:
  {}