ASP.NET Core 异常重试组件 Polly
2023-02-18 15:32:27 时间
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);
});
参考资料:
相关文章
- React技巧之打开文件输入框
- React技巧之发出http请求
- React技巧之检查元素是否可见
- React技巧之处理tab页关闭事件
- React技巧之循环遍历对象
- React技巧之字符串插值
- React技巧之组件中返回多个元素
- 火热的低代码到底是什么?
- 参加NextArch主办的「低代码meetup」
- 资深架构师开始录播了一起聊聊微服务、容器化、低代码及架构设计
- 消息队列(mq)是什么?
- 如何避免重复的开发
- 用BPM解决企业信息化的数据孤岛
- 撸代码之前我们应该想些什么
- 从开发的角度去分解项目需求
- 解决Docker安装Redis不能远程链接的问题
- 批量转移MySql数据表及附带脚本
- SaaS化工作流引擎设计方案
- 微服务&spring cloud架构系列
- 基础架构系列