码迷,mamicode.com
首页 > 其他好文 > 详细

polly异常重试、熔断

时间:2020-02-02 13:41:22      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:write   任务   防止   一段   快速   exce   间隔   new   time   

Polly:可以用来简化熔断降级的处理。主要功能:出现异常后,重试 断路器 超时检测 缓存 失败处理

熔断降级:防止一个服务请求失败导致整个系统崩溃,熔断后就不去请求此服务,快速失败

断路保护:连续出现N次异常,熔断几秒,等待的这段时间会抛出BrokenCircuitException异常。等待时间结束再执行Excute的时候如果又错了(一次就够),那么继续熔断一段时间,否则回复正常。熔断的目的是避免服务不可用了还是使劲请求给系统造成更大压力

//处理ArgumentException,NullReferenceException异常
            //ISyncPolicy policy = Policy
            //    .Handle<ArgumentException>()
            //    .Or<NullReferenceException>()
            //    .Fallback(cancellToken=> {
            //    Console.WriteLine("出错");
            //});

            ////处理包含"没有姓名参数"ArgumentException的异常
            //ISyncPolicy policy = Policy
            //    .Handle<ArgumentException>(argEx => (argEx.Message == "没有姓名参数"))
            //    .Fallback(cancellToken => {
            //    Console.WriteLine("出错");
            //});

            ////重试3次
            //ISyncPolicy policy = Policy
            //    .Handle<Exception>()
            //    .Retry(3);//.RetryForever()//一直试

//间隔1s、5s、10s、20s、1min各重试一次
Polly.Policy.Handle<WebException>().WaitAndRetry(
                  new[] {
            TimeSpan.FromSeconds(1),
            TimeSpan.FromSeconds(5),
            TimeSpan.FromSeconds(10),
            TimeSpan.FromSeconds(20),
            TimeSpan.FromMinutes(1)
        },(ex, ts, i, context) =>{Console.WriteLine("出错");});

            //重试3次,每次等待2秒
            ISyncPolicy policy = Policy
                .Handle<Exception>()
                .WaitAndRetry(3, i => TimeSpan.FromSeconds(1));

            //多次出错,断路保护
            ISyncPolicy policyCir = Policy
               .Handle<Exception>().CircuitBreaker(2, TimeSpan.FromSeconds(5));
            policy = policy.Wrap(policyCir);

            policy.Execute(() =>
            {
                Console.WriteLine("任务开始");
                throw new Exception("没有姓名参数");
            });

 

未完待续...

 

polly异常重试、熔断

标签:write   任务   防止   一段   快速   exce   间隔   new   time   

原文地址:https://www.cnblogs.com/fanfan-90/p/12251671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!