当前位置: 首页 > news >正文

如何做一个企业的网站网站需要收集什么建站资源

如何做一个企业的网站,网站需要收集什么建站资源,免费域名freenom,个人怎么进行网络广告营销如何在Zuul中使用fallback功能 我们在项目中使用Spring cloud zuul的时候#xff0c;有一种这样的需求#xff0c;就是当我们的zuul进行路由分发时#xff0c;如果后端服务没有启动#xff0c;或者调用超时#xff0c;这时候我们希望Zuul提供一种降级功能#xff0c;而不…如何在Zuul中使用fallback功能 我们在项目中使用Spring cloud zuul的时候有一种这样的需求就是当我们的zuul进行路由分发时如果后端服务没有启动或者调用超时这时候我们希望Zuul提供一种降级功能而不是将异常暴露出来。 在Dalston版本中Spring cloud zuul提供这种降级功能操作步骤如下 在主函数上添加EnbaleZuulProxy注解。实现ZuulFallbackProvider接口。 对应ZuulFallbackProvider源码如下 public interface ZuulFallbackProvider { /** * The route this fallback will be used for. * return The route the fallback will be used for. */ public String getRoute(); /** * Provides a fallback response. * return The fallback response. */ public ClientHttpResponse fallbackResponse();}我们只要实现该接口并实现public ClientHttpResponse fallbackResponse();方法也就是说该方法会让我定义一个ClientHttpResponse作为当异常出现时的返回内容。 通过源码我们可知Zuul提供三个配置文件每一个配置文件代表用不同种方式进行请求的转发 RestClientRibbonConfigurationOkHttpRibbonConfigurationHttpClientRibbonConfiguration(默认情况) HttpClientRibbonConfiguration源码如下(只体现涉及fallback模块) ConfigurationConditionalOnRibbonHttpClientprotected static class HttpClientRibbonConfiguration { Autowired(required false) private SetZuulFallbackProvider zuulFallbackProviders Collections.emptySet(); Bean ConditionalOnMissingBean public RibbonCommandFactory? ribbonCommandFactory( SpringClientFactory clientFactory, ZuulProperties zuulProperties ) { return new HttpClientRibbonCommandFactory( clientFactory, zuulProperties, zuulFallbackProviders ); }}通过源码我们可以了解Zuul将你自定义的fallbackprovider保存在一个Set集合中并作为HttpClientRibbonCommandFactory构造器的参数。当zuul在转发请求时最终会利用AbstractRibbonCommand进行处理。通过源码我们知道AbstractRibbonCommand继承了HystrixCommand所以真正转发请求的业务逻辑是在重写HystrixCommand类的run方法中进行的。 具体源码如下 Overrideprotected ClientHttpResponse run() throws Exception { final RequestContext context RequestContext.getCurrentContext(); RQ request createRequest(); RS response this.client.executeWithLoadBalancer(request, config); context.set(ribbonResponse, response); // Explicitly close the HttpResponse if the Hystrix command timed out to // release the underlying HTTP connection held by the response. // if (this.isResponseTimedOut()) { if (response ! null) { response.close(); } } return new RibbonHttpResponse(response);}我们知道HystrixCommand提供getFallback()方法这个方法的作用是当run()方法执行出现异常时会自动调用getFallback()方法从而完成降级功能。(HystrixCommand是Hystrix的知识有兴趣的同学可以参照官方git文档)。 由于AbstractRibbonCommand继承了HystrixCommand它不仅重写了run()方法而且重写了getFallback()方法具体源码如下 Overrideprotected ClientHttpResponse getFallback() { if(zuulFallbackProvider ! null) { return zuulFallbackProvider.fallbackResponse(); } return super.getFallback();}通过源码我们知道首先会去判断是否存在自定义的zuulFallbackProvider如果有那么直接回调你自定义实现类的fallbackResponse()方法。如果不存在会走hystrix的fallback逻辑(有可能直接抛出异常)。 说到这里Zuul的降级原理大致就说完了细心的朋友可以发现这样的一个问题就是虽然Zuul提供了降级的回调方法fallbackResponse()但是这个方法是无参的也就是说此时虽然你能够给调用端返回一个消息但是此时你并不知道发生了什么样的异常(也就是说在这里你是获取不到异常信息的)。 Edgware.RC1版本的改进 在Edgware.RC1版本中Spring cloud zuul针对于降级进行了升级升级的内容主要是解决上面说到的当降级出现时怎样在降级方法中获取具体的异常信息。 增加了一个接口FallbackProvider这个接口继承了现有的ZuulFallbackProvider接口源码如下 public interface FallbackProvider extends ZuulFallbackProvider { /** * Provides a fallback response based on the cause of the failed execution. * * param cause cause of the main method failure * return the fallback response */ ClientHttpResponse fallbackResponse(Throwable cause);}可以看到这个接口有一个方法这个方法的参数是Throwable也就是说此时是用能力获取异常信息的。 接下来改造的内容在AbstractRibbonCommand类中主要是对原有的getFallback()进行改造同时增加了一个getFallbackResponse()方法。下面通过源码具体了解下 Overrideprotected ClientHttpResponse getFallback() { if(zuulFallbackProvider ! null) { return getFallbackResponse(); } return super.getFallback();}可以看到从原来调用zuulFallbackProvider.fallbackResponse();转而调用内部方法getFallbackResponse()。 getFallbackResponse()源码如下 protected ClientHttpResponse getFallbackResponse() { if (zuulFallbackProvider instanceof FallbackProvider) { Throwable cause getFailedExecutionException(); cause cause null ? getExecutionException() : cause; if (cause null) { zuulFallbackProvider.fallbackResponse(); } else { return ((FallbackProvider) zuulFallbackProvider).fallbackResponse(cause); } } return zuulFallbackProvider.fallbackResponse();}通过源码可知此时会根据Throwable是否存在来决定走哪种类型的降级方法(原来的还是带有参数的)。 到此Zuul的实现降级的原理以及Edgware.RC1中的改进就介绍完了。
http://wiki.neutronadmin.com/news/277194/

相关文章:

  • wordpress视频教程 电驴佛山市seo网站设计工具
  • 切实加强网站建设携程旅游网站建设的定位
  • 用python做 网站论坛公司网站作用
  • 网站建设与管理课程总结中石化第四建设有限公司网站
  • 制作网站教程视频中国印花图案设计网站
  • 沈阳网站搜索排名申请注册一个商标多少钱
  • 邳州做网站的公司百度店面定位怎么申请
  • 请人做网站谁来维护wordpress 文章空白
  • 基础精品课程网站网络营销有哪些特点及功能
  • 网站运营者网址怎样购买网站
  • 建设网站公司专业合肥公司注册平台
  • 电子商务他们的代表网站自己写小说的网站
  • 做网站的证书重庆网站公司建设
  • 建设网站需要什么条件二级域名申请入口
  • 音乐外链网站宁津县建设局网站
  • 自己做网站设计制作淮安做网站找哪家好
  • 包装设计网站排行榜中恒建设集团有限公司 网站
  • 网站建设项目进展情况wordpress好还是dz
  • 商务网站管理的主要内容数据管理邯郸做网站的公司
  • 做公司网站的尺寸一般是多大美容美发网站建设方案
  • 天津网站开发网站做网站淘宝条形码
  • 在别的公司做的网站网站后台管理系统登录
  • 深圳做网站公wordpress 随机显示
  • 响应式h5网站多少钱四川省住房和城乡建设厅官网站网
  • 当阳市住房和城乡建设局网站空间如何安装wordpress
  • 网站开发主要技术海南手机网站建设公司哪家好
  • 同字形结构布局网站单仁咨询建设网站
  • 温岭市住房和城乡建设规划局网站优化大师破解版app
  • 建设网站的预期收益cms网站内容管理系统
  • 专业商城网站建设价格中山大良网站建设