10Zuul 重试机制 · SpringCloud微服务实战 · 看云
10. 重试机制
导航
本节代码地址
GitHub: https://github.com/xuyisu/fw-sping-cloud/tree/master/fw-cloud-gateways/fw-cloud-gateways-zuul-simple
GitHub: https://github.com/xuyisu/fw-sping-cloud/tree/master/fw-cloud-ribbon/fw-cloud-ribbon-server
之前我们在介绍Feign,也讲到的重试机制,现在我们来说一下Zuul的重试机制,希望Zuul 在转发服务的时候,如果失败可以重试几次,可能第一次是网络抖动,或者转发到相同服务名是的其它地址上面。
spring-retry是spring提供的一个基于spring的重试框架,我们直接使用这个框架。
10.1 maven 配置添加
<!--重试包-->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
10.2 修改应用配置
zuul:
retryable: true
这个开关默认是关闭的,开启后的配置和Ribbon 配置一样,如下
#重试
ribbon:
#配置首台服务器重试1次
MaxAutoRetries: 1
#配置其他服务器重试两次
MaxAutoRetriesNextServer: 2
#链接超时时间
ConnectTimeout: 500
#请求处理时间
ReadTimeout: 500
#每个操作都开启重试机制
OkToRetryOnAllOperations: true
这里可以直接使用Ribbon 的配置,是因为zuul 里面已经集成了Ribbon的包
10.3 在Ribbon Server添加随机延时
超过500秒就会重试
int millis = new Random().nextInt(3000);
System.out.println("client线程休眠时间:"+millis);
Thread.sleep(millis);
10.4 重启项目
浏览器或Postman 输入localhost:8679/ribbon/user/1
可以看到控制台重试的日志
这里和Feign 章节说的重试是一样的,可以回顾一下

