Polly .NET瞬时故障处理 - 重试

C# Polly .NET瞬时故障处理 - 重试


Polly是什么

简单地说,Polly是一个能捕获异常(包括不符合预期的结果),并可以使用重试、超时、断路等一些列处理操作的库,它是线程安全和支持流式调用的。

Polly支持的策略

Polly支持的策略可以在Polly Wiki查看,数量颇多。

重试策略

重试是最容易理解的一个概念,那么我们就从重试开始了解Polly的使用方法。

using System;
using System.Net;
using System.Net.Http;
using System.Threading;
using Polly;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var myPolicy = Policy
                //捕获异常
                .Handle<Exception>()
                //预期结果
                .OrResult<string>(str => string.IsNullOrEmpty(str))
                //重试策略
                .Retry(2, (exception, retryCount, context) =>
                {
                    Console.WriteLine($"重试次数: {retryCount}");
                });
                
            try
            {
                bool throwEx = false;
                //执行
                var result = myPolicy.Execute(() =>
                {
                    Console.WriteLine("正在执行任务...");
                    Thread.Sleep(2000);
                    if (throwEx)
                    {   //抛出异常.达到重试允许次数之后Polly会往上rethrow
                        throw new Exception();
                    }
                    else
                    {
                        throwEx = true;  //切换模式
                        return "";   //空字符串,不符合预期
                    }
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine($"重试2次之后仍然失败");
            }

            Console.ReadKey();
        }
    }
}

总结

以前项目中的异常都是靠手工撸码来处理的,一来对于后续维护不理想,二来项目时间匆忙也无法考虑全面,虽然一直都知道Polly,但原有的项目框架都固定了没法改,不久前开始学习使用Polly,借此做个笔记,加深印象,码农共勉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值