Class Retry.JitterRetryPolicy

java.lang.Object
io.helidon.faulttolerance.Retry.JitterRetryPolicy
All Implemented Interfaces:
Retry.RetryPolicy
Enclosing interface:
Retry

public static class Retry.JitterRetryPolicy extends Object implements Retry.RetryPolicy
A retry policy that randomizes delays between execution using a "jitter" time.

Consider the following setup:

  • calls = 4
  • delayMillis = 100
  • jitter = 50
The following delays will be used for each call:
  • Initial call - always immediate (not handled by retry policy)
  • First retry: 50 - 150 millis (delay +- Random.nextInt(jitter)
  • Second retry: 50 - 150 millis
  • Third retry: 50 - 150 millis
  • Method Details

    • builder

      public static Retry.JitterRetryPolicy.Builder builder()
      A new fluent API builder to configure instances of Retry.
      Returns:
      a new builder
    • nextDelayMillis

      public Optional<Long> nextDelayMillis(long firstCallNanos, long lastDelay, int call)
      Description copied from interface: Retry.RetryPolicy
      Return next delay in milliseconds, or an empty optional to finish retries.
      Specified by:
      nextDelayMillis in interface Retry.RetryPolicy
      Parameters:
      firstCallNanos - milliseconds recorded before the first call using System.currentTimeMillis()
      lastDelay - last delay that was used (0 for the first failed call)
      call - call index (0 for the first failed call)
      Returns:
      how long to wait before trying again, or empty to notify this is the end of retries