Polly v8 Resilience Pipelines (Retry with Exponential Backoff + Jitter)
1Concept
Polly v8 introduces zero-allocation `ResiliencePipeline`. Retries with exponential backoff and randomized jitter prevent the Thundering Herd problem when recovering from downstream outages.
2Architecture Diagram
Transient Network Error
│
Retry 1 (100ms + Jitter)
│ (Fails)
Retry 2 (200ms + Jitter)
│ (Fails)
Retry 3 (400ms + Jitter) ──> Success! (Recovered automatically)3Code Example
C# 13 & .NET 9
using System;
public class PollyResilienceConceptDemo
{
public static void Main()
{
Console.WriteLine("Polly v8 Resilience Pipeline:");
Console.WriteLine("var pipeline = new ResiliencePipelineBuilder()");
Console.WriteLine(" .AddRetry(new RetryStrategyOptions {");
Console.WriteLine(" MaxRetryAttempts = 3,");
Console.WriteLine(" Delay = TimeSpan.FromMilliseconds(200),");
Console.WriteLine(" BackoffType = DelayBackoffType.Exponential,");
Console.WriteLine(" UseJitter = true");
Console.WriteLine(" })");
Console.WriteLine(" .Build();");
}
}4Expected Output
Polly v8 Resilience Pipeline:
var pipeline = new ResiliencePipelineBuilder()
.AddRetry(new RetryStrategyOptions {
MaxRetryAttempts = 3,
Delay = TimeSpan.FromMilliseconds(200),
BackoffType = DelayBackoffType.Exponential,
UseJitter = true
})
.Build();5Key Takeaways
- ✓Polly v8 is redesigned from the ground up for zero heap allocations.
- ✓Always enable `UseJitter = true` to spread retry waves evenly across servers.
- ✓Integrate with `IHttpClientFactory.AddResilienceHandler()` in .NET 8/9.