default Backoff withFirstRetryNoDelay() { return new FirstRetryNoDelayBackoff(this); } }
default Backoff withUniformJitter(long range) { return new UniformRandomBackoff(this, range); }
default Backoff withMaxDelay() { return new BoundedMaxBackoff(this); }
@Override public long delayMillis(RetryContext context) { final long initialDelay = target.delayMillis(context); final long randomDelay = addRandomJitter(initialDelay); return Math.max(randomDelay, 0); }
default Backoff withProportionalJitter(double multiplier) { return new ProportionalRandomBackoff(this, multiplier); }
default Backoff withMinDelay() { return new BoundedMinBackoff(this); }
@Override public long delayMillis(RetryContext context) { if (context.isFirstRetry()) { return 0; } else { return target.delayMillis(decrementRetryCount(context)); } }
@Override public long delayMillis(RetryContext context) { final long initialDelay = target.delayMillis(context); final long randomDelay = addRandomJitter(initialDelay); return Math.max(randomDelay, 0); }
default Backoff withUniformJitter() { return new UniformRandomBackoff(this); }
default Backoff withMaxDelay(long maxDelayMillis) { return new BoundedMaxBackoff(this, maxDelayMillis); }
default Backoff withProportionalJitter() { return new ProportionalRandomBackoff(this); }
default Backoff withMinDelay(long minDelayMillis) { return new BoundedMinBackoff(this, minDelayMillis); }
@Override public long delayMillis(RetryContext context) { if (context.isFirstRetry()) { return 0; } else { return target.delayMillis(decrementRetryCount(context)); } }
default Backoff withFirstRetryNoDelay() { return new FirstRetryNoDelayBackoff(this); } }
@Override public long delayMillis(RetryContext context) { final long initialDelay = target.delayMillis(context); final long randomDelay = addRandomJitter(initialDelay); return Math.max(randomDelay, 0); }
default Backoff withUniformJitter(long range) { return new UniformRandomBackoff(this, range); }
default Backoff withMaxDelay() { return new BoundedMaxBackoff(this); }
default Backoff withProportionalJitter(double multiplier) { return new ProportionalRandomBackoff(this, multiplier); }
default Backoff withMinDelay(long minDelayMillis) { return new BoundedMinBackoff(this, minDelayMillis); }
default Backoff withUniformJitter() { return new UniformRandomBackoff(this); }