1、Hystrix解决什么问题?
服务链上,因为某个微服务的异常,而导致雪崩效应,整条服务链宕机的问题;
Hystrix回去捕获这个异常,利用Hystrix接口处理这类异常。
2、使用比较简单
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
App.java
@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
public class Dept8001App
{
public static void main( String[] args )
{
SpringApplication.run(Dept8001App.class, args);
}
}
rest.java、注意fallbackMethod的方法必须和get的方法签名保持一致,否则报错。错误
@GetMapping("/get/{id}")
@HystrixCommand(fallbackMethod="getFallback")
public Dept get(@PathVariable("id") long id){
Dept dept = deptService.get(id);
if(dept == null){
throw new RuntimeException("部门信息不存在");
}
return dept;
}
public Dept getFallback(@PathVariable("id") long id){
Dept dept = new Dept();
dept.setDeptno(999999L);
dept.setDname("get method is error");
dept.setLoc("dept - provider ");
return dept;
}
3、难道每个方法都需要编写一个方法方法签名一致的fallback方法嘛?
预知后事如何,请看下回分解。