我想在我们的.net应用程序中引入瞬态故障处理.我看到现在有两个nu-get包.一个是Polly框架,另一个是Microsoft瞬态故障处理应用程序块.
我们调查并看到了支持异步功能和不同的重试策略.Polly框架还支持断路器.有人建议使用哪个框架有一些可靠的原因.此外,如果框架的利弊以及互联网社区的支持和未来扩展和支持的范围可以突出显示,那将是非常有用的.提前致谢.
我正在使用Polly框架进行瞬态故障处理.对于同步操作,Polly断路器策略工作正常,但是当我创建其异步版本时,它不会重试执行.请建议:
异步方法:
private async static Task HelloWorld()
{
if (DateTime.Now < programStartTime.AddSeconds(10))
{
Console.WriteLine("Task Failed.");
throw new TimeoutException();
}
await Task.Delay(TimeSpan.FromSeconds(1));
Console.WriteLine("Task Completed.");
}
Run Code Online (Sandbox Code Playgroud)
Polly断路器异步策略:
private static void AsyncDemo3(Func<Task> action)
{
programStartTime = DateTime.Now;
Policy policy = Policy
.Handle<TimeoutException>()
.CircuitBreakerAsync(3, TimeSpan.FromSeconds(2));
try
{
var a = policy.ExecuteAndCaptureAsync(action, true).GetAwaiter().GetResult();
}
catch (AggregateException ex)
{
Console.WriteLine("Exception: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
执行Polly断路器政策:
AsyncDemo3(的HelloWorld);
请帮助找到并解决问题.