SpringCloud使用Feign服務通信踩的坑


  fallback熔斷器實現了Feign客戶端的所有方法,當網絡不通或者訪問失敗時,會自動調用fallback服務降級類中的方法。

啟動項目時報錯了,具體的報錯信息如下:

Caused by: java.lang.IllegalStateException: No fallback instance of type class com.xxx.xxx.feign.fallback.RemoteUserFallback found for feign client xxx

 

報錯內容明顯是沒找到RemoteUserFallBack這個類

1、檢查配置文件

feign:
  hystrix:
    enabled: true # 開啟Feign的熔斷功能 默認是關閉的

2、啟動類上需要@EnableFeignClients注解

@EnableFeignClients(basePackages = {"com.xxx.包名"}) //開啟Feign並掃描Feign客戶端

3、Feign客戶端類上使用@FeignClient,通過fallback屬性來指明對應熔斷器的類名

@FeignClient(value = "服務名", fallback = RemoteUserFallback.class,) //聲明當前類是一個Feign客戶端,並指定請求的服務名

4、fallback熔斷器類上需要加注解@Component,確保可以被spring掃描

我報錯的原因就是出現在第四步這里,盡管我加了@component注解。SpringBoot在啟動的時候 會掃描main類所在包及其子包進行Bean的實例化,但是fallback熔斷器類並不在我啟動類的子類下面,我這里是通過引入其模塊來調用這里面的方法。

所以最后我在啟動類上加了@ComponentScan注解:

@ComponentScan(basePackages = {"com.xxx"})

OK,成功啟動並訪問成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM