JavaEE:SpringCloud-Hystrix使用
程序员文章站
2022-10-03 14:15:26
说明:hystrix用于保护微服务接口,可以对微服务接口配置超时时间、降级、熔断。超时:设置接口的超时时间。降级:当接口方法阻塞时,调用指定的方法返回错误信息,需要设置超时时间。熔断:打开熔断器时,接口不通,关闭时接口恢复正常。一、hystrix配置:1.在工程的pom.xml中导入依赖包: org.springframework.cloud<.....
说明:
hystrix用于保护微服务接口,可以对微服务接口配置超时时间、降级、熔断。
超时:设置接口的超时时间。
降级:当接口方法阻塞时,调用指定的方法返回错误信息,需要设置超时时间。
熔断:打开熔断器时,接口不通,关闭时接口恢复正常。
一、hystrix配置:
1.在工程的pom.xml中导入依赖包:
<!-- 导入hystrix依赖包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2.在Application中加入注解:
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public class HystrixApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixApplication.class, args);
}
}
二、配置超时时间:
1.配置全局超时时间,在工程resources/application.yml中:
hystrix: #配置hystrix
command:
default: #默认所有超时时间
execution:
isolation:
thread:
timeoutInMilliseconds: 5000 #5000毫秒
usercenter: #基于usercenter服务的超时时间
execution:
isolation:
thread:
timeoutInMilliseconds: 5000 #5000毫秒
2.配置方法级别(在某个接口路径的方法加@HystrixCommand注解)的超时时间:
@HystrixCommand(commandProperties = {//从HystrixCommandProperties中找name
//以下一项配置超时时长(可以在aplication.yml中配置全局的):
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "5000")
})
@RequestMapping("getUserList/")
public String getUserList(String id) {
//...
}
三、降级处理(需要配置超时时间):
1.方法级别的降级处理:
@HystrixCommand(fallbackMethod = "getUserListByFallback") //降级处理,当前方法阻塞时,会调用参数里的方法
@RequestMapping("getUserList/")
public String getUserList(String id) {
//...
}
//和@HystrixCommand(fallbackMethod = "getUserListByFallback")对应,参数要保持一样
public String getUserListByFallback(String id) {
return "返回失败信息";
}
2.类级别的降级处理:
@Controller
@DefaultProperties(defaultFallback = "commonFallback")//通用降级处理,当前类所有路径方法阻塞时,会调用参数里的方法
public class UserController {
//和@DefaultProperties(defaultFallback = "commonFallback")对应
public String commonFallback() {
return "返回失败信息";
}
}
四、熔断配置,在接口方法的@HystrixCommand注解里加@HystrixProperty:
@HystrixCommand(commandProperties = {//从HystrixCommandProperties中找name
//以下三项配置熔断器规则:
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "40"), //默认超过一半20次请求失败时,打开熔断器
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "5000"), //默认休眠5000毫秒后,关闭熔断器
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "50") //默认请求失败占总数50%,打开熔断器
})
@RequestMapping("getUserList/")
public String getUserList(String id) {
//...
}
本文地址:https://blog.csdn.net/a526001650a/article/details/107896444
上一篇: 草莓可以放冰箱保鲜吗 草莓怎么保存
下一篇: JAVA 数据类型与运算符