ASP.NET Core 異常重試組件 Polly


Polly 是一種 .NET 彈性和瞬態故障處理庫,允許開發人員以流暢和線程安全的方式表達策略,如重試,斷路器,超時,隔離隔離和備用,Polly 適用於 .NET 4.0,.NET 4.5 和 .NET Standard 1.1。

安裝 Nuget 程序包:

Install-Package Polly

簡單使用:

// Execute an action
var policy = Policy
              .Handle<Exception>()
              .RetryAsync(10, async (exception, retryCount) =>
              {
                  await LogAsync(exception, $"第{retryCount}次重試");
              });

await policy.ExecuteAsync(async () => await DoSomething());

//另外一種使用方式:
var tokenResponse = await Policy
        .Handle<Exception>()
        .OrResult<TokenResponse>(x => x.IsError)
        .RetryAsync(5) //如果使用Retry,會報錯誤:Please use asynchronous-defined policies when calling asynchronous ExecuteAsync (and similar) methods
        .ExecuteAsync(async () =>
        {
            var client = new DiscoveryClient(_appSettings.IssuerUri);
            client.Policy.RequireHttps = false;
            var disco = await client.GetAsync();
            var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret);
            return await tokenClient.RequestRefreshTokenAsync(refreshToken);
        });

參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM