Class 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 Detail

      • 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