Hystrix容错处理的使用(springcloud)

在微服务中,一旦有一个服务器出错,对于整个业务来说带来的灾害是不可估计的,因此,我们需要有一定的容错处理,在出错时降低对业务的影响
因此Hystrix就应运而生
它是通过超时处理和断路器模式进行容错处理,断路器模式类似于我们正常使用的电流断路器,这里就不多说了,直接说下此机制是怎么使用的吧。

本例子代码:

Eureka:https://github.com/lihang212010/demo-cloud-Eureka/tree/master/demo-cloud-Eureka
微服务:https://github.com/lihang212010/demo-cloud-user
Hystrix https://github.com/lihang212010/Hystrix

添加依赖

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		</dependency>

它的使用方法是
**@HystrixCommand(fallbackMethod = “××××”)"
××××可以是方法(正常使用)
也可以是接口类(Feign使用)

这是我控制器的使用,在方法中加上Throwable throwable参数可以看出容错原因

@RestController
public class MoviesController {
  private static final Logger LOGGER=LoggerFactory.getLogger(MoviesController.class);
	@Autowired
	
	private RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "findByIDFallback")  //使用Hystrix注解
	@RequestMapping("/user/{id}")
	public Users findById(@PathVariable Long id) {
		return this.restTemplate.getForObject("http://demo-cloud-user/"+id, Users.class);
	}	

		public Users findByIDFallback(Long id,Throwable throwable) {   //注解对应的方法
			LOGGER.error("进入回退方法的异常为:"+throwable);
			Users users=new Users();
			users.setName("出错时用户");
			return users;
		}
	} 

然后在运行类中需要加@EnableHystrix 注解

Users是一个数据POJO

我们首先开启我们Eureka
接着是2个微服务
最后开启我们的Hystrix(我数据库并无数据)
在这里插入图片描述
然后关掉两个微服务
再次访问在这里插入图片描述
并没有报错而是回到了我们设置的出错时的数据。
而如果不设置Hystrix时我们程序会报404错误。

Feign的容错处理因为是接口的原因需要继承
我单独放一博客上吧,不然一堆图片看着烦人
博客地址(没有说明我没写好)

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值