示例GitHub源码地址:https://github.com/AngelSXD/springcloud
1.首先使用feign调用,需要配置熔断器
2.配置熔断器需要将熔断器注入Bean,熔断器类上需要加注解@Component,确保可以被spring扫描到
3.熔断器类需要实现feignClient接口,并且重写 feignClient接口中的所有方法,做降级处理逻辑
4.需要在feignClient上的注解中,通过fallback属性来指明熔断器.class,等服务熔断的时候,来执行熔断器中重写的方法内容【如果有统一异常拦截,则不会进入熔断器】
5.hystrix的jar需要被maven引用,并且在classpath下
6.配置文件中需要添加 【feign.hystrix.enabled=true】
7.注意,feignClient上尽量不要使用@RequestMapping(),注册,否则当有Accept header,会出现404
8.最后注意,如果有统一异常拦截,请处理好,不然B发生异常,被统一异常捕获,A是感知不到调用者出异常了!!
9.最后的最后,使用feign调用,启动类上需要注解
@EnableFeignClients({"com.swapping"})
而报错缺少jar包,则在maven引用jar包即可。
注意不同版本引入jar名字不一样
低版本jar
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>
高版本jar
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>