博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net core编写转发服务(三) 接入Polly
阅读量:5309 次
发布时间:2019-06-14

本文共 1935 字,大约阅读时间需要 6 分钟。

在web服务里面,很常见出现各种问题,需要一些响应的策略,比如服务繁忙的时候,重试,或者重试等待

服务繁忙的时候根据策略即使处理

关于接入Polly我还是沿用之前的代码,继续迭代

Web Api用的是FastHttpApi

增加在过滤器里

public class RetryAttribute: FilterAttribute    {        private int _count;        public RetryAttribute(int count)        {            _count = count;        }        public override void Executed(ActionContext context)        {            try            {                var policy = Policy                .Handle
() .Retry(_count, (ex, count) => { Console.WriteLine($"Retry Index:{count}, Exception:{ex.Message}"); }); policy.Execute(() => { base.Executed(context); if (context.Exception != null) throw context.Exception; }); } catch(Exception ex) { } } }

在需要过滤的方法上面打上

[Post(Route = "{url}")]        [NoDataConvert]        [Retry(5)]        public async Task
Service(string url,IHttpContext context) { //略略略 }

我们测试一个不存在的服务

看见了重试了

响应信息如下

这明显不符合我们的要求,我们希望返回也是一个Model类型的

方便前端处理

修改一下过滤器的Executed

public override void Executed(ActionContext context)        {            var requestTime = DateTime.Now;            try            {                 //略略略            }            catch(Exception ex)            {                context.Result = new ResponseModel                {                    RequestTime = requestTime,                    ResponseTime = DateTime.Now,                    IsSuccessFul = false,                    Data = null,                    ErrorMessage = ex.Message                };                context.Exception = null;            }        }

再测试一下看看结果

ok~~~

我这里只是根据简单场景接入了Polly,同理可以在asp.net core里面加入,有兴趣的小伙伴可以看看

Polly参考Jeffcky的文章

还有很多用法,大家可以摸索一下

 

完整项目源码

转载于:https://www.cnblogs.com/NCoreCoder/p/10856492.html

你可能感兴趣的文章
CodeForces 411B 手速题
查看>>
同比和环比
查看>>
美国在抛弃慕课,中国却趋之若鹜
查看>>
SpringMvc拦截器运行原理。
查看>>
MySQL基础3
查看>>
云计算数据与信息安全防护
查看>>
全局设置导航栏
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>
9款免费的Windows远程协助软件
查看>>
Maven(八) Maven项目和testng结合应用
查看>>
iOS 的 set.get.构造方法
查看>>
无法根据中文查找
查看>>
文件编码,文件或文件名编码格式转换(转)
查看>>
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
redis的hash与string区别
查看>>
转载 python多重继承C3算法
查看>>