How to combine multiple resilience strategies into a pipeline in Polly v8?

Asked -39 seconds ago Updated 4 hours ago 19 views

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));

0 Answers


Write Your Answer