0
In real-world production scenarios, combining multiple resilience strategies—such as Retry, Circuit Breaker, and Timeout—into a single pipeline offers comprehensive fault tolerance.
Ordering Resilience Strategies
Order matters when chaining strategies in a pipeline. The outer strategies wrap the inner strategies.
Recommended Ordering Pattern
- Outer: Fallback
- Middle: Retry
- Inner: Circuit Breaker
- Innermost: Timeout
Code Example
var pipeline = new ResiliencePipelineBuilder()
.AddFallback(new FallbackStrategyOptions
{
ShouldHandle = new PredicateBuilder().Handle<Exception>(),
FallbackAction = args => Outcome.FromResultAsValueTask("Cached Result")
})
.AddRetry(new RetryStrategyOptions
{
MaxRetryAttempts = 2,
Delay = TimeSpan.FromMilliseconds(500)
})
.AddTimeout(TimeSpan.FromSeconds(2))
.Build();
var result = await pipeline.ExecuteAsync(async ct =>
await FetchDataFromServiceAsync(ct));