1
Long-running requests can consume system resources and cause bottleneck issues. Applying a Timeout strategy ensures that calls return control promptly if a dependency takes too long to respond.
Timeout Implementation in Polly v8
Polly supports both optimistic and pessimistic timeout strategies. Optimistic timeout relies on CancellationToken cancellation support.
Code Example
var pipeline = new ResiliencePipelineBuilder()
.AddTimeout(new TimeoutStrategyOptions
{
Timeout = TimeSpan.FromSeconds(3),
OnTimeout = args =>
{
Console.WriteLine($"Operation timed out after {args.Timeout.TotalSeconds}s");
return ValueTask.CompletedTask;
}
})
.Build();
try
{
await pipeline.ExecuteAsync(async cancellationToken =>
{
await LongRunningTaskAsync(cancellationToken);
});
}
catch (TimeoutRejectedException)
{
// Handle timeout scenario
}