1,微服务之间是通过Fegin进行调用,创建了一个调用接口,当开启熔断机制之后,会造成无法启动和编译
2,托底函数 问题就出现在托底函数上面
1 @FeignClient(name = "service-vod",fallback = VodFileDegradeFeignClient.class) 2 @Component 3 public interface VodClient { 4 5 /** 6 * 根据视频id删除网络视频,(远程调用) 7 * @param videoId 8 * @return 9 */ 10 @DeleteMapping("/eduvod/video/delete/{videoId}") 11 R removeVideo(@PathVariable("videoId") String videoId); 12 13 14 /** 15 * 根据id列表删除网络视频,(远程调用) 16 * @param videoIdList 17 * @return 18 */ 19 @DeleteMapping("/eduvod/video/deleteBatch") 20 R deleteBatch(@RequestParam("videoIdList") List<String> videoIdList); 21 22 }
3,报错情况,原因是找不到托底函数
1 Caused by: java.lang.IllegalStateException: No fallback instance of type class com.jouyo.eduservice.client.VodFileDegradeFeignClient found for feign client service-vod 2 at org.springframework.cloud.openfeign.HystrixTargeter.getFromContext(HystrixTargeter.java:81) 3 at org.springframework.cloud.openfeign.HystrixTargeter.targetWithFallback(HystrixTargeter.java:72) 4 at org.springframework.cloud.openfeign.HystrixTargeter.target(HystrixTargeter.java:49) 5 at org.springframework.cloud.openfeign.FeignClientFactoryBean.loadBalance(FeignClientFactoryBean.java:253) 6 at org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:282) 7 at org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:262) 8 at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:171) 9 ... 59 common frames omitted
4,解决方案,在你的远程调用实现类上加上注解
1 @Service 2 public class VodFileDegradeFeignClient implements VodClient { 3 //********* 4 }