Hystrix通用方式整合
源码位置:微服务注册管理:https://github.com/zhaowei-zhang/CloudTest/tree/master/使用Hystrix实现容错/microservice-discovery-eureka生产者:https://github.com/zhaowei-zhang/CloudTest/tree/master/使用Hystrix实现容错/microservice...
返回目录
https://blog.csdn.net/BW_Bear/article/details/88746646
源码位置:
微服务注册管理:
https://github.com/zhaowei-zhang/CloudTest/tree/master/使用Hystrix实现容错/microservice-discovery-eureka
生产者:
https://github.com/zhaowei-zhang/CloudTest/tree/master/使用Hystrix实现容错/microservice-provider-user
通用方式整合:
1.依赖
<!--hystrix 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2.启动类注解
添加
@EnableHystrix 或 @EnableCircuitBreaker
为项目添加断路器支持
3.修改Controller
方法增加容错注解,以及设定回退方法
@HystrixCommand(fallbackMethod = “findByIdFallback”)
fallbackMethod 设定回退方法名
@HystrixCommand(fallbackMethod = "findByIdFallback")
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id){
return this.restTemplate.getForObject("http://microservice-provider-user/"+id,User.class);
}
public User findByIdFallback(Long id){
User user =new User();
user.setId(-1L);
user.setName("游客");
return user;
}
4.确定何种异常进行回退
ignoreExceptions 设定不进入回退的方法
@HystrixCommand(fallbackMethod = "findByIdFallback",ignoreExceptions = {
IllegalArgumentException.class
})
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id){
if(id==1){
throw new IllegalArgumentException();
}
else if(id==2){
throw new IndexOutOfBoundsException();
}
return this.restTemplate.getForObject("http://MICROSERVICE-PROVIDER-USER/"+id,User.class);
}
区别如下:
5.确定配置属性
commandProperties
属性配置可不写,详细配置请看
https://github.com/Netflix/Hystrix/wiki/Configuration
6.测试
见4中图片
返回目录
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)