美文网首页
Spring Cloud 之断路器

Spring Cloud 之断路器

作者: Superwind20 | 来源:发表于2017-03-18 23:49 被阅读3526次

    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

    相关文章

      网友评论

          本文标题:Spring Cloud 之断路器

          本文链接:https://www.haomeiwen.com/subject/plopnttx.html