给远程调用添加一个降级服务
总结:本次使用Hystrix对于Feign客户端提供的降级服务方式二。
首先是在需要远程调用服务的类中:
1、添加Hystrix场景启动器。
<!-- Hystrix的依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
老师说依赖了Feign会传递依赖Hystrix,但是我看是灰色的,那我就自己写。
2、yaml配置开启Hystrix
# 开启服务熔断与降级
feign:
hystrix:
enabled: true
3、创建一个类实现Fein客户端接口,交给Spring管理,创建同名方法(降级服务)。
注:这里无需写@override
4、在Feign客户端添加注解属性
5、在SpringBoot启动类中添加注解@EnableHystrix
其次,在被远程调用的类中:
为了方便测试,我们配置一下最大线程数:
server:
port: 8080
# Tomcat
tomcat:
# uri编码
uri-encoding: UTF-8
# 最大等待队列长度:每个请求使用一个线程,线程数超过最大链接数后请求会进入等待队列,直到有线程处理
accept-count: 1
# 最大链接数:Tomcat同一时间能接受的最大线程数量,需要大于 max-threads + accept-count
max-connections: 1
# 请求体最大长度(单位:KB)2097152=2GB
threads:
# 最小线程数:SpringBoot启动时初始化的线程数量
min-spare: 1
# 最大线程数:可以设为CPU线程数的200~250倍
max: 1
max-http-form-post-size: 2097152
connection-timeout: 30000
注意:2.3版本以后不能再使用server.tomcat.max-threads了,要使用server.tomcat.threads.max。
小问题:
由于重操作,经常会出现Gateway Timeout ==504的错误。
解决办法:
配置页面的等待响应时间。