话题一:如何使用Hystrix
- 1.创建一个最简单的Consumer
- 2.在配置文件中添加对Hystrix的引用
<dependencies>
<!-- 连接hystrix配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<!-- 连接Eureka配置,将微服务注册到Eureka上面 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!-- 连接Feign配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<!-- actuator监控器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
3.在主程序启动的地方添加@EnableCircuitBreaker
@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker
public class ServerConsumeHystrixApplication {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ServerConsumeHystrixApplication.class, args);
}
}
- 4.在要进行断路的方法前面添加配置
@HystrixCommand(fallbackMethod="findByIdFallBack")
创建一个参数一模一样的方法,返回默认值
- 5.#设置Hystrix的超时时间(配置版)
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 500
hystrix.command.default.execution.timeout.enabled: false
6.#设置Hystrix的超时时间(标注版)
@GetMapping("/movie/{id}")
@HystrixCommand(commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "5000"),
@HystrixProperty(name = "execution.timeout.enabled", value = "false")},fallbackMethod="findByIdFallBack")
public User findById(@PathVariable Long id) {
return this.restTemplate.getForObject("http://server-provider/simple/" + id, User.class);
}