使用Polly让程序有Retry的机制

有时候我们需要调用其他API的时候出现暂时连接不通超时的情况,那这时候可以通过Polly进行Retry。

1、从nuget引用polly,

2、定义需要处理的异常有哪些,比如

Policy.Handle<TimeoutException>().Or<FormatException>()

3、异常发生时候需要定义重试几次,等多久后再重试,比如

var policy = Policy.Handle<TimeoutException>().RetryAsync(3, (exception, retryCount) =>
{

});

4、代码跟policy结合起来的demo如下:

       private static Logger logger = LogManager.GetCurrentClassLogger();

        private static void Main(string[] args)
        {
            var policy = Policy.Handle<TimeoutException>()
                .WaitAndRetryAsync(5, retryAttempt => TimeSpan.FromSeconds(5), (exception, retryCount) =>
            {
                logger.Error(exception);
            });

            var result = policy.ExecuteAsync(() => Test());
        }

        private static async Task Test()
        {
            using (var httpClient = new HttpClient())
            {
                var response = httpClient.GetAsync("http://news.cnblogs.com/Category/GetCategoryList?bigCateId=11&loadType=0").Result;
                await response.Content.ReadAsStringAsync();
            }
        }
时间: 2024-11-10 01:24:20

使用Polly让程序有Retry的机制的相关文章

Polly+AspectCore实现熔断与降级机制

Polly+AspectCore实现熔断与降级机制 https://www.cnblogs.com/edisonchou/p/9159644.html 一.熔断.降级与AOP 1.1 啥是熔断? 在广义的解释中,熔断主要是指为控制股票.期货或其他金融衍生产品的交易风险,为其单日价格波动幅度规定区间限制,一旦成交价触及区间上下限,交易则自动中断一段时间("熔即断"),或就此"躺平"而不得超过上限或下限("熔而不断"). 而对于微服务来说,熔断就是我

黑马程序员_Java反射机制

一切的操作都将使用Object完成,类,数组的引用都可以使用Object来接收 1,认识Class类 以前要是想知道一个类中的属性,成员变量,方法等等的信息的话,需要通过new这个类的对象才能得到这些信息,但是在Java中,也允许一个实例化对象找到一个类的完整的信息,这个类就是Class类,Class类是继承Object类的. 正常方式:  引入需要的"包.类"名称 >取得实例化对象 反射方式:  实例化对象>得到完整的"包.类"名称 getClass(

黑马程序员_类加载机制

------- android培训.java培训.期待与您交流! ---------- 0.类加载机制知识体系 1.类与JVM进程 使用Java命令运行某个Java程序时,此命令会启动一个Java虚拟机进程,不管Java程序多复杂,开启了多少个线程,这个线程都运行在Java虚拟机进程里.同一个JVM的所有线程.所有变量都处于同一个进程里,都使用该JVM进程的内存区. 只有出现下列情况时,JVM进程才会终止: 1)程序正常结束. 2)程序执行到代码System.exit()或Runtime.get

linux程序的常用保护机制

linux程序的常用保护机制 来源 https://www.cnblogs.com/Spider-spiders/p/8798628.html 操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,包括DEP.ASLR等.在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了DEP(Linux下对应NX).ASLR(Linux下对应PIE)等机制,例如存在DEP(NX)的话就不能直接执行栈上的数据,存在ASLR的话各个系统调用的地址就是随机化的. 一.checksec che

.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制

一.熔断.降级与AOP 1.1 啥是熔断? 在广义的解释中,熔断主要是指为控制股票.期货或其他金融衍生产品的交易风险,为其单日价格波动幅度规定区间限制,一旦成交价触及区间上下限,交易则自动中断一段时间("熔即断"),或就此"躺平"而不得超过上限或下限("熔而不断"). 而对于微服务来说,熔断就是我们常说的"保险丝",意为当服务出现某些状况时,切断服务,从而防止应用程序不断地常识执行可能会失败的操作造成系统的"雪崩&q

Java程序的垃圾回收机制

显示回收垃圾分析? 传统的C,C++语言 都是需要程序员负责回收已经分配的内存. 这个事情由程序员来做,会导致问题,因为程序员并不是总是知道内存该何时被释放,如果一些分配出的内存得不到及时回收,就会引起系统运行速度的下降,甚至程序瘫痪,这叫做内存泄漏. 缺点:1)程序忘记及时回收无用内存,从而导致内存泄漏,降低系统性能. 2)程序错误地回收系统核心的类库的内存,从而导致系统崩溃. Java程序的内存分配都是由Java运行环境JRE在后台自动进行的.JRE负责回收那些不再使用的内存,这种机制被称为

黑马程序员-5.通知机制(Notification)

通知时最近才学到的一个机制,只在文本框内容改变的时候才用的,不是很熟,但是很有用,主要时作用在M和C之间,上面的delegate主要作用在M和V之间. 通知(notifacation)是非常好的一种机制,它可以对消息进行广播.特别是想要传递丰富的信息,并且不一定指望有谁对此消息关心. 通知可以用来发送任意的消息,甚至包含一个userInfo字典,或者是NSNotifacation的一个子类.通知的独特之处就在于发送者和接收者双方并不需要相互知道.这样就可以在非常松耦合的模块间进行消息的传递.记住

黑马程序员---java反射机制的实现原理

------- android培训.java培训.期待与您交流! ---------- 反射机制就是java语言在运行时拥有一项自观的能力. 通过这种能力可以彻底的了解自身的情况为下一步的动作做准备. 下面具体介绍一下java的反射机制.这里你将颠覆原来对java的理解. Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method: 其中class代表的时类对象, Constructor-类的构造器对象, Field-类的属性对象, Method-类的方

黑马程序员___java反射机制

 ----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method:其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象.通过这四个对象我们可以粗略的看到一个类的各个组 成部分.Class:程序运行时,java运行时系统会对所有的对象进行运行时类型的处理.这项信息记录了每个