与Feign的Fallback降级方法不同,这个hystrix降级方法是写在被调用方的
需要依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
启动类需要注解:例如
@SpringBootApplication
@EnableEurekaClient
//开启Hystrix
@EnableCircuitBreaker
public class SearchApplication { public static void main(String[] args) {
SpringApplication.run(SearchApplication.class, args);
}
}
在controller中,针对某一个接口去写降级方法,例如
@RestController
public class SearchController { /**
* 模拟根据id查询
* 注解里指定了接口发生异常后, 降低调用的方法
* @param id
*/
@GetMapping("/search/{id}")
@HystrixCommand(fallbackMethod = "findByIdFallBack")
public Customer findById(@PathVariable Integer id){
int i = 1/0;
return new Customer(1,"张三",23);
} /**
* findById的降级方法 方法的描述要和接口一致
* 一致是指和原接口方法, 传参, 返回值必须要一模一样
*/
public Customer findByIdFallBack(Integer id){
return new Customer(-1,"",0);
}
}
简单的hystrix降级方法,就OK了