使用Polly让程序有Retry的机制

本文介绍如何利用Polly库处理API调用过程中遇到的超时和异常情况,通过设置重试策略来确保请求的成功完成。具体步骤包括从Nuget引用Polly、定义需要处理的异常类型、设定重试次数和间隔时间,并提供了实际代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

转载于:https://www.cnblogs.com/hj4444/p/4746616.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值