springcloud,通過fegin調用其他子服務,直接被熔斷,走fullback的問題

    先說背景,是這樣的。我們用的springcloud,做了微服務。

我的啓動類,所在的目錄如下:

大部分都是直接在com.lenovoedu目錄下,而有的是在com.lenovoedu的子目錄下。比如com.lenovoedu.newexam等。

我啓動類的配置如下,所有的微服務都一樣

問題就出在這裏,只要啓動類是直接在com.lenovoedu下面的,就能正常跟其他子服務進行通信。只要是在com.lenovoedu的子目錄下的,就會直接被熔斷,然後直接fullback.我的fullback如下,是自己定義的異常,直接拋出。

但是這樣是看不到具體的異常信息的。再次,教大家一招,在fullback裏直接拋出RunTimeException。你就能看到具體的異常信息了。如下:

然後我的異常信息如下:

猛一看,空指針。我去這不是客戶端沒有被注入嗎。然後,肯定是沒有掃描到啊。

但是我@ComponentScan(basePackages = {"com.lenovoedu"})配置了呀。

於是開始研究@ComponentScan和@EnableFeignClients的掃描。

@ComponentScan:此註解是用來管理容器中的bean,即是管理項目中類的依賴關係, 注意此註解並不創建類的實例; 默認情況下此註解掃描本工程下的所有包

@EnableFeignClients: 此註解的作用是掃描標記了@FeignClient的接口並創建實例bean,默認掃描並創建所在工程下的包。如果在springBoot的分佈式中需要用到別的微服務的工程的接口實例,就需要單獨配置。如果我的類都是在com.lenovoedu下,那麼不單獨配置也是可以的。所以纔會出現文中剛開始說的問題,只要是在啓動類直接在com.lenovoedu下的微服務間都能正常通信。

修改啓動類配置如下後,通信正常:

推薦這篇博客看一下:

https://www.cnblogs.com/qiaoyutao/p/9813069.html

https://www.cnblogs.com/zhucww/p/10517089.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章