Fork me on GitHub

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);
        });

参考资料:

posted @   田园里的蟋蟀  阅读(2792)  评论(2编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2015-08-09 2015-写给明年现在的自己
2014-08-09 【记录】JS 获取 URL 中文参数编码
点击右上角即可分享
微信分享提示