Spring Cloud OpenFeign 默认是应用Ribbon实现负载平衡和重试机制的,尽管Feign有本人的重试机制,但该性能在Spring Cloud OpenFeign根本用不上,除非有特定的业务需要,则能够实现本人的Retryer,而后在全局注入或者针对特定的客户端应用特定的Retryer。
  在SpringCloud体系我的项目中,引入的重试机制保障了高可用的同时,也会带来一些其它的问题,如幂等操作或一些没必要的重试,上面咱们实际操作来测试Spring Cloud架构中的重试机制。
1、因为Ribbon默认是开启重试机制的,应用上一章节的代码能够测试重试机制,这里为了分辨是否执行了重试,咱们把gitegg-service-cloud上面配置的Ribbon负载平衡策略改为轮询。依照上一章节形式启动三个服务,而后页面疾速点击测试,发现服务端口始终有法则的切换。而后,疾速敞开其中一个gitegg-service-system服务,此时持续在页面疾速点击测试,咱们发现接口并没有报错,而是切换到其中一个服务的端口,这阐明重试机制无效。
2、接下来,咱们批改配置文件使重试机制生效,就能够看到服务敞开后因没有重试机制零碎报错的后果。批改GitEgg-Platform工程下子工程gitegg-service-cloud的代码,增加Ribbon相干配置文件,因为Ribbon默认是开启重试机制的,这里抉择敞开

ribbon:  #申请连贯的超时工夫  ConnectTimeout: 5000  #申请解决/响应的超时工夫  ReadTimeout: 5000  #对所有操作申请都进行重试  OkToRetryOnAllOperations: false  #切换实例的重试次数  MaxAutoRetriesNextServer: 0  #以后实例的重试次数  MaxAutoRetries: 0

3、GitEgg-Platform从新install,GitEgg-Cloud我的项目从新导入依赖,而后重启三个服务,这时,疾速点击测试接口的时候再敞开其中一个服务,发现接口在拜访服务的时候因为没有重试机制,导致拜访接口报错

本文源码在https://gitee.com/wmz1930/GitEgg 的chapter-13分支。