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 }
