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

使用Polly让程序有Retry的机制

时间:2015-08-21 01:43:37      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

有时候我们需要调用其他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();
            }
        }

 

使用Polly让程序有Retry的机制

标签:

原文地址:http://www.cnblogs.com/hj4444/p/4746616.html

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