Polly公共处理 -重试(Retry)

封装处理下Polly重试

private ILogger<PollyHelper> _logger;
        /// <summary>
        ///
        /// </summary>
        /// <param name="logger"></param>
        public PollyHelper(ILogger<PollyHelper> logger)
        {
            _logger = logger;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="exception"></param>
        /// <param name="action"></param>
        public void PollyRetry<T>(Action action) where T : Exception
        {
            var policy = Policy
               .Handle<T>()
               .Retry(2, (ex, count) =>
               {
                   _logger.LogError("执行失败!重试次数 {0}\r\n异常来自 {1}", count, ex.GetType().Name);
               });

            policy.Execute(action);
        }

调用重试

 _pollyHelper.PollyRetry<UserServicesDomainException>(() =>
            {
                throw new UserServicesDomainException("斯大林附近打开了房间");
            });

执行结果如下

原文地址:https://www.cnblogs.com/liyouming/p/9056965.html

时间: 2024-09-29 19:27:05

Polly公共处理 -重试(Retry)的相关文章

atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭

atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭 1. 流程总结 retry(5times).invoke(xxx).test().rest().$() throw OvertimeEX retry(5times):: throw OvertimeEX 调用器() /// 调用原来的api 测试器() :::://////返回T/f Reset()     //// 重设器 End:: 测试器() 命令Case1 ok, 返回T Case2 fail,

使用Polly让程序有Retry的机制

有时候我们需要调用其他API的时候出现暂时连接不通超时的情况,那这时候可以通过Polly进行Retry. 1.从nuget引用polly, 2.定义需要处理的异常有哪些,比如 Policy.Handle<TimeoutException>().Or<FormatException>() 3.异常发生时候需要定义重试几次,等多久后再重试,比如 var policy = Policy.Handle<TimeoutException>().RetryAsync(3, (exc

已被.NET基金会认可的弹性和瞬态故障处理库Polly介绍

前言 本节我们来介绍一款强大的库Polly,Polly是一种.NET弹性和瞬态故障处理库,允许我们以非常顺畅和线程安全的方式来执诸如行重试,断路,超时,故障恢复等策略. Polly针对对.NET 4.0,.NET 4.5和.NET Standard 1.1以及.NET Core实现,该项目作者现已成为.NET基金会一员,项目一直在不停迭代和更新,项目地址[https://github.com/App-vNext/Polly],你值得拥有.接下来我们以.NET Framework  4.5来演示它

弹性和瞬态故障处理库Polly

已被.NET基金会认可的弹性和瞬态故障处理库Polly介绍 前言 本节我们来介绍一款强大的库Polly,Polly是一种.NET弹性和瞬态故障处理库,允许我们以非常顺畅和线程安全的方式来执诸如行重试,断路,超时,故障恢复等策略. Polly针对对.NET 4.0,.NET 4.5和.NET Standard 1.1以及.NET Core实现,该项目作者现已成为.NET基金会一员,项目一直在不停迭代和更新,项目地址[https://github.com/App-vNext/Polly],你值得拥有

Polly的多种弹性策略介绍和简单使用

什么是Polly? Polly是一个.NET弹性和瞬态故障处理库.允许我们以非常顺畅和线程安全的方式来执行诸如行重试,断路,超时,故障恢复等策略. Polly项目地址:https://github.com/App-vNext/Polly Polly提供多种弹性策略:重试(Retry),断路器(Circuit-breaker),超时检测(Timeout),缓存(Cache),降级(FallBack) 重试(Retry): 前置条件:许多故障是短暂的,并且可能在短暂延迟后自我纠正 政策如何缓解:允许

c# polly学习

最近在项目当中使用到了开源项目polly的异常重试策略,在使用当中发现polly是个功能很强大的项目, 于是对其提供的几种策略进行学习. polly的github地址为:https://github.com/App-vNext/Polly 关于polly polly文档中对自己介绍的原文是: Polly is a .NET resilience and transient-fault-handling library that allows developers to express polic

三分钟学会.NET微服务之Polly

原文:三分钟学会.NET微服务之Polly 熔断降级是一个非常重要的概念,我们先说一下什么是熔断降级,咱们都知道服务发现,一个有问题的服务器没来得急注销过一会就崩溃掉了,那么我们的请求就有可能访问一个已经崩溃的服务器,那么就会请求失败,因为已经game over了.那么这个问题怎么解决呢,你一定要承认,这个问题是无法避免的.没有什么方法说,我拿到的服务器都没有问题,这事是不可能的,所以你要承认你会有机会拿到有问题的服务器.那么熔断降级就是来解决这种问题的. 一.什么是熔断 熔断就像是“保险丝”,

polly的几种常用方法

参考资料:https://www.cnblogs.com/edisonchou/p/9159644.html 特征:可以实现一些代码的熔断和降级 代码: ////普通,其中 Fallback相当于降级处理 //Policy.Handle<ArgumentException>().Fallback(()=>{ // MessageBox.Show("Error occured"); //}).Execute(()=> { // MessageBox.Show(&q

ASP.Net Core2.1中的HttpClientFactory系列二:集成Polly处理瞬态故障

前言:最近,同事在工作中遇到了使用HttpClient,有些请求超时的问题,辅导员让我下去调研一下,HttpClinet的使用方式已经改成了之前博客中提到的方式,问题的原因我已经找到了,就是因为使用了伪异步,导致阻塞主线程.在之前的博客中有园友,建议在使用静态的HttpClinet时务必使用它的Async方法,所以就得从头到尾异步化.这一点在之前的文章中没有提,这里作为补充,也感谢这位园友.关于怎么使用异步编程,在这里我就不聊了,大家可以看看其他的博客,看完公司的代码之后,我想强调的是,在使用异