7 private static readonly Random Rng =
new Random();
12 public static TimeSpan
DecorrelatedJitter(TimeSpan baseDelay,
int attempt, TimeSpan? maxDelay =
null)
14 if (attempt < 1) attempt = 1;
15 double capMs = (maxDelay ?? TimeSpan.FromSeconds(30)).TotalMilliseconds;
16 double sleepMs = Math.Min(capMs, baseDelay.TotalMilliseconds * Math.Pow(2, attempt));
17 double jitter = Rng.NextDouble() * sleepMs;
18 return TimeSpan.FromMilliseconds(jitter);
static TimeSpan DecorrelatedJitter(TimeSpan baseDelay, int attempt, TimeSpan? maxDelay=null)
Decorrelated jitter backoff ("full jitter") based on attempt number.