欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

相关标签: JavaEE SpringCloud