private static async Task Main(string[] args)
{
var timeoutPolicy = Policy
.TimeoutAsync(TimeSpan.FromSeconds(5), TimeoutStrategy.Pessimistic);
var timeoutTotalPolicy = Policy
.TimeoutAsync(TimeSpan.FromSeconds(20), TimeoutStrategy.Pessimistic);
var waitAndRetryPolicy = Policy
.Handle<Exception>()
.WaitAndRetryAsync(
2,
_ => TimeSpan.FromMilliseconds(200));
var fallbackForAnyException = Policy<string>
.Handle<Exception>()
.FallbackAsync(
_ => Task.FromResult(""),
_ => Task.CompletedTask);
var policyWrap = fallbackForAnyException
.WrapAsync(timeoutTotalPolicy)
.WrapAsync(waitAndRetryPolicy)
.WrapAsync(timeoutPolicy);
var res = await policyWrap.ExecuteAsync(async () =>
{
await Task.Delay(10);
throw new Exception("eee");
});
}
Polly
发布时间 2024-01-10 21:15:43作者: 月渊