| File: ResilienceUtils.cs | Web Access |
| Project: src\tests\testproject\TestProject.IntegrationServiceA\TestProject.IntegrationServiceA.csproj (TestProject.IntegrationServiceA) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Polly; using Polly.Retry; namespace Aspire.TestProject; public static class ResilienceUtils { public static ResiliencePipelineBuilder GetDefaultResiliencePipelineBuilder<TException>(Func<OnRetryArguments<object>, ValueTask> onRetry, int overallTimeoutSecs = 90) where TException : Exception { // Retry for upto 20 times with delay of 1 sec between // attempts, and also stop before an overall timeout of // @overallTimeoutSecs var optionsOnRetry = new RetryStrategyOptions { MaxRetryAttempts = 20, ShouldHandle = new PredicateBuilder().Handle<TException>(), Delay = TimeSpan.FromSeconds(1), OnRetry = onRetry }; return new ResiliencePipelineBuilder() .AddTimeout(TimeSpan.FromSeconds(overallTimeoutSecs)) .AddRetry(optionsOnRetry); } }