第一步: 引入包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
第二步:开启配置
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public class rootE {
public static void main(String[] args) {
System.out.println("初始化容器");
SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(rootE.class);
springApplicationBuilder.run(args);
System.out.println("初始化容器结束");
}
当然也可以直接使用:@SpringCloudApplication
@RequestMapping("/user2")
@ResponseBody
@HystrixCommand(fallbackMethod = "errorUser")
String user2() {
try {
Thread.sleep(10000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return restTemplate1.getForObject("http://XDW-SERVICE/xdw/user", AdUserDO.class).getUserName() ;
}
String errorUser() {
return "熔断,超时了执行此方法";
}
保证 user2和errorUser 这两个方法必须参数和返回值一致,方法名可以不一样
实现效果:
实现通用降级方法:
@DefaultProperties(defaultFallback = "errorCommon")
public class CustomController {
@RequestMapping("/user4")
@ResponseBody
@HystrixCommand
String user4() {
try {
Thread.sleep(10000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return restTemplate1.getForObject("http://XDW-SERVICE/xdw/user", AdUserDO.class).getUserName() ;
}
String errorCommon() {
return "通用熔断,超时了执行此方法";
}
记住:errorCommon 此方法一定是不带参数