【spring cloud】spring cloud 使用feign调用,1.fallback熔断器不起作用,2.启动报错Caused by: java.lang.ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.Hystri解决

时间:2023-03-09 13:43:07
【spring cloud】spring cloud 使用feign调用,1.fallback熔断器不起作用,2.启动报错Caused by: java.lang.ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.Hystri解决

示例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>