Spring Cloud 之断路器

本文介绍如何在SpringCloud中使用Hystrix实现断路器功能,包括通过Ribbon和Feign两种方式引入Hystrix的具体步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Cloud中使用Hystrix来实现断路器的功能。

Ribbon中引入Hystrix

1. pom.xml引入spring-cloud-starter-hystrix,application主类中使用@EnableCircuitBreaker,开启断路器功能。

2. RestTemplate远程调用代码收敛到新的方法,在该方法上使用@HystrixCommand(fallbackMethod = "**Fallback")

3. 增加**Fallback方法,里面编写出现断路时的处理逻辑等

注意:

1. 回退方法的名称可随意定,但出、入参必须和所注解的方法一致,否则报fallbackMethod未定义错误

2. 远程方法执行时间大于断路器的时限(例如timeoutInMilliseconds=5s,而远程方法执行10s),hystrix中的MethodExecutionAction.execute捕获异常,HystrixCommand检查是否有配置回退方法,如果有,则回退方法执行,调用方按回退方法返回的内容继续执行,直到业务处理结束。如果没有,则抛HystrixRuntimeException

Feign使用Hystrix

1. 不需要在Feigh工程中引入Hystix,Feign中已经依赖了Hystrix

2. 不需要在主类使用@EnableCircuitBreaker,已自动开启该功能

3. 在FeignClient的interface上设置fallback,如 @FeignClient(value = "user-service", fallback = UserServiceHystrix.class)

4. 增加UserServiceHystrix类实现feign接口,重写其中的方法,里面的逻辑为:容错处理,例如,直接返回错误

注意:

1. 不需要在FeignClient的interface上使用@HystrixCommand,已隐含,所以在没有写fallback类的情况下,抛异常:hystrix中的InvocableHandlerMethod.doInvoke捕获HystrixRuntimeException,错误信息 ** failed and no fallback available;超时:同上,捕获HystrixRuntimeException,错误信息 ** timed-out and no fallback available

转载于:https://my.oschina.net/superwind20/blog/1524166

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值