Geçici hata işleme için Polly framework kullanıyorum. Eşzamanlı işlemler için Polly devre kesici politikası iyi çalışır, ancak uyumsuz sürümünü oluşturduğumda yürütmeyi tekrar denemez. Lütfen göstermektedir:Polly framework CircuitBreakerAsync, istisna oluşursa yeniden deneme yapmaz.
Asenkron yöntemi:
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);
}
}
Polly devre kesici ilkesi yürütülmesi:
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."); }
Polly devre kesici uyumsuz ilkesi
AsyncDemo3 (MerhabaDünya);
Sorunu bulmanıza ve çözmenize yardımcı olun.
Polly da artık [PolicyWrap] eklendi (https://github.com/App-vNext/Polly/wiki/PolicyWrap) politikaları daha da kısa bir şekilde birleştirmek için sözdizimi yapabilir: 'retryPolicy.WrapAsync (circuitBreakerPolicy) .ExecuteAsync (...)' –