分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

LindDotNetCore~Polly组件对微服务场景的价值

发布时间:2023-09-06 01:40责任编辑:沈小雨关键词:组件

回到目录

Polly是一个开源框架,在github上可以找到,被善友大哥收录,也是.App vNext的一员!

App vNext:https://github.com/App-vNext

GitHub:https://github.com/App-vNext/Polly

NanoFabric是一个开源的微服务架构,也是善友大哥推荐的:https://github.com/geffzhang/NanoFabric

对于NanoFabric来说,它集成了很多.net core开源项目,其中包括了Consul + .NET Core + Polly + Ocelot + Exceptionless + IdentityServer,你是否闻到了某种味道!

Polly给我们带来了什么

  1. 对http请求提供重试机制
  2. 对指定异常进行特殊的处理
  3. 提供了多种策略

程序中的使用

封装一个方法,对外提供一个委托的参数,把需要进行polly的代码段输入进来即可,对于http,数据库,网络通讯等非常必要,因为这些场景可能存在不稳定的因素!polly正好可以帮我们非常

友好的解决它,下面的代码主要实现了对所有异常的跟踪,然后每1秒重新执行一次,可以重试5次!

 ???????/// <summary> ???????/// polly重试机制 ???????/// </summary> ???????private static HttpResponseMessage retryTwoTimesPolicy(Func<HttpResponseMessage> action) ???????{ ???????????var policy = Policy ???????????????.Handle<Exception>() ???????????????.WaitAndRetry( ????????????????5, ????????????????retryAttempt => TimeSpan.FromSeconds(Math.Pow(1, retryAttempt)), ????????????????(ex, timer, c, i) => ????????????????{ ????????????????????logger.Logger_Info($"执行失败! 重试次数 {c}"); ????????????????????logger.Logger_Info($"异常来自 {ex.GetType().Name}"); ????????????????}); ???????????return policy.Execute(action); ???????}

我们之前的httpHelper请求对象,也可以引入polly机制,全局进行控制!

 ???????/// <summary> ???????/// GET请求 ???????/// </summary> ???????/// <param name="requestUri">服务地址</param> ???????/// <param name="nv">参数键值</param> ???????/// <returns></returns> ???????public static HttpResponseMessage Get( ???????????string requestUri, ???????????NameValueCollection nv) ???????{ ???????????try ???????????{ ???????????????return retryTwoTimesPolicy(() => ???????????????{ ???????????????????var result = httpClient.GetAsync(GeneratorUri(requestUri, nv)).Result; ???????????????????UnGZip(result); ???????????????????return result; ???????????????}); ???????????} ???????????catch (Exception ex) ???????????{ ???????????????throw ex; ???????????} ???????}

自己开两个api进程,一个是对外提供服务,别一个作为主服务器,被其它进行访问,当它挂了之后,其实进行可以通过polly进行重试!

感谢各位的阅读!

微服务来了,但需要我们关注的点多了!

奋斗吧!

回到目录

LindDotNetCore~Polly组件对微服务场景的价值

原文地址:https://www.cnblogs.com/lori/p/8387205.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved