您所在的位置:首页 >行情 >
全球即时看!Polly简单使用

时间:2023-06-17 06:23:04    来源:博客园


(相关资料图)

简介

Polly 是一个针对 .NET 应用程序的库,提供了一系列经过优化的故障处理策略,帮助开发人员实现重试、断路器、超时和熔断机制等。通过 Polly 库,开发人员可以更容易地编写鲁棒性更强、更可靠的应用程序。

Retry 策略

当出现异常或错误时,自动重试指定次数。

static void Main(){try{//捕获DivideByZeroException异常会重试三次var retryTwoTimesPolicy = Policy//处理多个异常类型通过OR即可 .Handle().Or() .Retry(3, (ex, count) => { Console.WriteLine("执行失败! 重试次数 {0}", count); Console.WriteLine("异常来自 {0}", ex.GetType().Name); });retryTwoTimesPolicy.Execute(() =>{var a = 0;return 1 / a;});}catch (Exception ex){//第四次异常不做处理,抛出异常Console.WriteLine($"catch {ex.GetType().Name}");}finally{Console.WriteLine($"finally");}}
static void Main(){try{//捕获DivideByZeroException异常会重试三次var retryTwoTimesPolicy = Policy //处理多个异常类型通过OR即可 .Handle().Or() //添加重新间隔 .WaitAndRetry(new[] {TimeSpan.FromSeconds(1),TimeSpan.FromSeconds(3),TimeSpan.FromSeconds(5), }, (ex, TimeSpan) => { Console.WriteLine($"执行失败! 执行间隔 {TimeSpan} {DateTime.Now}"); Console.WriteLine($"异常来自 {ex.GetType().Name}"); });retryTwoTimesPolicy.Execute(() =>{var a = 0;return 1 / a;});}catch (Exception ex){Console.WriteLine($"catch {ex.GetType().Name}");}finally{Console.WriteLine($"finally");}}

Timeout 策略

在规定时间内未获取到响应时,自动取消请求并抛出超时异常。

static async Task Main(){// 创建超时策略,等待最多 1 秒钟// 如果在等待时间内未完成操作,则会抛出 TimeoutRejectedException 异常。var timeoutPolicy = Policy.TimeoutAsync(TimeSpan.FromSeconds(1), TimeoutStrategy.Pessimistic);try{// 在超时策略中执行操作await timeoutPolicy.ExecuteAsync(async (ct) =>{using (HttpClient httpClient = new HttpClient()){var response = await httpClient.GetAsync("https://www.example.com", ct);// 处理响应结果response.EnsureSuccessStatusCode();var content = await response.Content.ReadAsStringAsync(ct);Console.WriteLine(content);}}, CancellationToken.None);/* * 最后,我们使用 ExecuteAsync 方法,在组合策略中执行异步操作,并在 CancellationToken 参数中传递 CancellationToken.None 来允许取消操作。 * 如果在指定的等待时间内没有得到响应,则会抛出 TimeoutRejectedException 异常。如果操作失败,则会捕获异常并输出相应的信息。 */}catch (TimeoutRejectedException){Console.WriteLine("The operation timed out.");}catch (Exception ex){Console.WriteLine($"Exception caught: {ex.GetType().Name}");}}

Circuit Breaker 策略

当某个远程服务发生异常或错误时,自动跳闸断路,避免进一步请求对该服务造成负载压力和损害。

static async Task Main(){//连续失败 5 次,那么断路器会被打开,并保持 5 秒钟的打开状态时间,防止继续执行相同的操作var circuitBreakerPolicy = Policy.Handle().CircuitBreaker(5, TimeSpan.FromSeconds(5));// 对多个操作使用相同的断路器策略for (int i = 0; i < 20; i++){try{await Task.Delay(TimeSpan.FromSeconds(1));// 尝试执行某些可能会抛出异常的操作circuitBreakerPolicy.Execute(() =>{// TODO: 执行某些操作,可能会抛出异常throw new Exception($"异常");});}catch (Exception ex){// 断路器开启,操作被拒绝Console.WriteLine($"time:{DateTime.Now} Num:{i} failed: {ex.Message}");}}}

Microsoft.Extensions.Http.Polly

是基于 Polly 的一个 ASP.NET Core HttpClient 工厂的扩展库,它能够为应用程序提供简单易用的、可扩展的 HTTP 客户端工厂,并且可以很容易地实现重试、熔断、超时等策略。

var retryPolicy = HttpPolicyExtensions   .HandleTransientHttpError()   .Or() // thrown by Polly"s TimeoutPolicy if the inner execution times out   .RetryAsync(3);var timeoutPolicy = Policy.TimeoutAsync(10);//更方便的使用polliyservices.AddHttpClient("example.com", c => c.BaseAddress = new Uri("http://example.com"))  .AddPolicyHandler(retryPolicy)  .AddPolicyHandler(timeoutPolicy);

参考

https://github.com/App-vNext/Pollyhttps://github.com/App-vNext/Polly.Extensions.Http/blob/master/README.md

标签:
全球即时看!Polly简单使用

全球即时看!Polly简单使用

简介Polly是一个针对 NET应用程序的库,提供了一系列经过优化的故障

世界热点!尼安德特人的遗产:考古人员解开

世界热点!尼安德特人的遗产:考古人员解开 "维京病"的遗传线索

在北欧60岁以上的男性中,有高达30%的人患有一种叫做杜普伊特伦挛缩的

谨慎下载 Win10 ISO镜像被黑客下马:攻击手法罕见

谨慎下载 Win10 ISO镜像被黑客下马:攻击手法罕见

很多网友下载安装Windows系统习惯从网上找ISO镜像,然这种方式也被别有

每日简讯:panamera名字由来_panamera中文名

每日简讯:panamera名字由来_panamera中文名

1、应该无译。2、不是英文单词(德文)。3、Panamera直接从发音上翻译

玩英雄联盟的那个蛋叫什么(有个英雄联盟女主播游戏名字叫狗蛋什么的)

玩英雄联盟的那个蛋叫什么(有个英雄联盟女主播游戏名字叫狗蛋什么的)

想必现在有很多小伙伴对于有个英雄联盟女主播游戏名字叫狗蛋什么的方面

今头条!千里结

今头条!千里结"粮"缘 哈尔滨好粮油6月17日亮相福州万达广场

千里结 "粮 "缘哈尔滨好粮油6月17日亮相福州万达广场,“黑龙江好粮油”

数星客长春专买柜台_数星客

数星客长春专买柜台_数星客

1、提问:热心网友【满意答案】:和登山鞋一样,数星客速干裤也是需要

掘金夺冠后,外媒重排近10年FMVP:一哥垫底,库里5,詹姆斯太强 今日最新

掘金夺冠后,外媒重排近10年FMVP:一哥垫底,库里5,詹姆斯太强 今日最新

掘金夺冠后,外媒重排近10年FMVP:一哥垫底,库里5,詹姆斯太强,掘金,

最新资讯:面对面畅谈需求  这场产销对接会为四川家具企业与全国经销商搭建合作平台

最新资讯:面对面畅谈需求 这场产销对接会为四川家具企业与全国经销商搭建合作平台

拍摄、剪辑:程磊四川经济网讯(李霁玥 文乔薇 图)6月16日,一场优化

快讯!俄媒:普京称,俄罗斯从未将任何企业赶出俄市场|当前快报

快讯!俄媒:普京称,俄罗斯从未将任何企业赶出俄市场|当前快报

【环球网快讯】据俄新社报道,俄罗斯总统普京16日出席圣彼得堡国际经济

成都环球博纳诉刘德华等十被告涉嫌抄袭案庭审结束等待宣判 原告不同意调解

成都环球博纳诉刘德华等十被告涉嫌抄袭案庭审结束等待宣判 原告不同意调解

因认为刘德华总监制并出演的电影《扫毒2》,在诸多方面剽窃自己在2006

代号:九剑手游最新攻略及内部号福利分享

代号:九剑手游最新攻略及内部号福利分享

代号:剑九是一款以武侠为背景的ARPG手游,玩家在游戏中可以扮演不同的

实训营园地│期待下一次相约_世界看热讯

实训营园地│期待下一次相约_世界看热讯

实训营园地│期待下一次相约---火热的六月,我和兄弟单位的同事们一起

盗窃罪加重处罚情节有什么

盗窃罪加重处罚情节有什么

一、盗窃罪加重处罚情节有什么盗窃罪加重处罚情节有以下几点:1 犯罪集

关于跳江救人小哥被奖励10万元和一套房及跳江救人小哥被奖励10万元和一套房详情|天天热闻

关于跳江救人小哥被奖励10万元和一套房及跳江救人小哥被奖励10万元和一套房详情|天天热闻

音频解说1、6月16日,跳江救人的外卖小哥彭清林再次收到了来自家乡的暖

地面膨胀螺栓怎么安装(膨胀螺栓怎么安装)

地面膨胀螺栓怎么安装(膨胀螺栓怎么安装)

来为大家解答以上问题。地面膨胀螺栓怎么安装,膨胀螺栓怎么安装这个很

《汉字找茬王》找字衙通关策略 环球观速讯

《汉字找茬王》找字衙通关策略 环球观速讯

《汉字找茬王》找字衙通关攻略是什么呢?关于这个问题可能很多小伙伴都

杭州亚运会圣火采集仪式,采火使者穿的长裙是“雅典那一套”?

杭州亚运会圣火采集仪式,采火使者穿的长裙是“雅典那一套”?

天下我嘴笨只能说,最显眼的姑娘们的衣服,表现的还是不够。说是加入了

当前要闻:初一描写春天的作文300字

当前要闻:初一描写春天的作文300字

乐乐学教研网精心为你收集整理了初一描写春天的作文300字(精选18篇)

焦点快报!【女性向|中文音声台本】连续几天c梦里的帅哥在梦醒之后竟然就在我的床上!!!

焦点快报!【女性向|中文音声台本】连续几天c梦里的帅哥在梦醒之后竟然就在我的床上!!!

高考完回归啦!!!感谢等待录制请私信要授权,谢谢配合(鞠躬)内容简

环球印务:公司互联网数字营销业务为众多知名游戏开发商提供营销服务

环球印务:公司互联网数字营销业务为众多知名游戏开发商提供营销服务

每经AI快讯,有投资者在投资者互动平台提问:您好,请问贵公司有在开发

外交部回应布林肯访华:中方将阐明对中美关系的立场和关切 关注

外交部回应布林肯访华:中方将阐明对中美关系的立场和关切 关注

【外交部回应布林肯访华:中方将阐明对中美关系的立场和关切】6月16日

滇池赛龙舟,观赛赏景两不误

滇池赛龙舟,观赛赏景两不误

第11届中国大学生龙舟锦标赛于6月16日在昆明滇池开赛。在滇池美景的衬

交通银行信用卡积分兑换礼品商城_交通银行信用卡积分兑换礼品 全球播资讯

交通银行信用卡积分兑换礼品商城_交通银行信用卡积分兑换礼品 全球播资讯

1、你可以致电8009888888转人工进行积分兑换或者可以登录交行的信用卡

天天快资讯:银行纷纷下调存款利率 居民储蓄意愿降低 “存款搬家”去哪儿了?

天天快资讯:银行纷纷下调存款利率 居民储蓄意愿降低 “存款搬家”去哪儿了?

随着新一轮降息潮的到来,居民储蓄意愿也在降低。央行公布的5月金融数

广告

X 关闭

广告

X 关闭