【Spring Cloud 06】Hystrix

2021-02-27 15:56:10
引入pom依赖 ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> ``` 启动类 ```java @EnableCircuitBreaker @SpringBootApplication @EnableFeignClients public static void main(String[] args) { SpringApplication.run(BarApplication.class, args); } ``` 服务类 ```java package com.example; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class BarService { @Autowired FooClient fooClient; @HystrixCommand( fallbackMethod = "fallback", commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000") }, threadPoolKey = "fooServiceThreadPool", threadPoolProperties = { @HystrixProperty(name = "coreSize", value = "30"), @HystrixProperty(name = "maxQueueSize", value = "10") } ) public String callFoo() { return fooClient.version(); // 去 foo-service 中模拟随机超过2秒的高延时 } private String fallback() { return "降级内容"; } } ``` 控制器 ```java @RestController class TestController{ @Autowired BarService barService; @GetMapping("/test") public String test() { return barService.callFoo(); } } ```