public static IHttpClientBuilder UseRetryPolicy(this IHttpClientBuilder builder, int retries) { Random random = new Random(); // Policy is: // Retries: 3 // Timeout: 2^attempt seconds (2, 4, 8 seconds) + -100 to 100 ms jitter return(builder.UseRetryPolicy(retries, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)) + TimeSpan.FromMilliseconds(random.Next(-100, 100)))); }
/// <summary>Adds a retry policy with 3 retries. Also adds a timeout policy that waits for 10 minutes before it terminates a request.</summary> public static IHttpClientBuilder UseDefaultHttpPolicy(this IHttpClientBuilder builder) { return(builder.UseRetryPolicy(3).UseTimeoutPolicy(TimeSpan.FromMinutes(10))); }