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分支。

最新文章

  1. python将图片转换为Framebuffer裸数据格式(终端显示图片)
  2. JS脚本收藏(一些实用的函数)
  3. 利用Github Pages生成一个快速访问的网址,展示自己的项目
  4. ubuntu eclipse 不能新建javaweb项目解决方案
  5. freeswitch编译
  6. ajax 的基本原理
  7. 让图片在DIV中垂直居中
  8. 解压和生成 system.img&data.img ( ext4格式)
  9. ACCESS数据库增强器需求及介绍
  10. Jmeter(十三)用Jmeter自带录制工具代理录制手机端应用脚本APP脚本
  11. IDEA中debug启动tomcat报错。Error running t8:Unable to open debugger port(127.0.0.1:49225):java.net.BindException"Address alread in use:JVM_Bind"
  12. Service Worker MDN英文笔记
  13. golang struct
  14. 小游戏——金庸奇侠传(JAVA,对面向对象的进一步了解)
  15. Laravel View Composer - 当 include 一个模板时,自动获取其所需的变量
  16. CSS3 Flexbox可视化指南
  17. Elasticsearch之优化
  18. 将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出
  19. ILP32、ILP64、LP64、LLP64、64位系统
  20. 去n的第一个出现的1

热门文章

  1. mysql事务干货详解
  2. PHP中的PDO操作学习(二)预处理语句及事务
  3. css3 animate转圈360旋转
  4. 转mybatis返回自增主键,亲测
  5. 分析 ajax 请求并抓取 “今日头条的街拍图”
  6. CF848E-Days of Floral Colours【dp,分治NTT】
  7. 借jQuery对象拷贝学习深拷贝与浅拷贝
  8. SPA测试
  9. js正则格式化日期时间自动补0
  10. MySQL8 根据某属性查询字段排名由自定义变量到rank()的变动