Spring Cloud中,Feign常見問題總結

2021-09-11 15:23:25 字數 1526 閱讀 8789

spring cloud中,feign常見問題的總結。

**示例:

feignclient介面中,如果使用到@pathvariable ,必須指定其value

**示例:

這邊的@pathvariable("id") 中的」id」,不能省略,必須指定。

feignclient多引數的構造

如果想要請求microservice-provider-user 服務,並且引數有多個例如:http://microservice-provider-user/query-by?id=1&username=張三 要怎麼辦呢?

直接使用複雜物件:

該請求不會成功,只要引數是複雜物件,即使指定了是get方法,feign依然會以post方法進行傳送請求。

正確的寫法:

寫法1:

寫法2:

feign如果想要使用hystrix stream,需要做一些額外操作

我們知道feign本身就是支援hystrix的,可以直接使用@feignclient(value = "microservice-provider-user", fallback = ***.class) 來指定fallback的類,這個fallback類整合@feignclient所標註的介面即可。

但是假設我們需要使用hystrix stream進行監控,預設情況下,訪問http://ip:port/hystrix.stream 是個404。如何為feign增加hystrix stream支援呢?

需要以下兩步:

第一步:新增依賴,示例:

第二步:在啟動類上新增@enablecircuitbreaker 註解,示例:

這樣修改以後,訪問任意的api後,再訪問http://ip:port/hystrix.stream,就會展示出一大堆的api監控資料了。

如果需要自定義單個feign配置,feign的@configuration 註解的類不能與@componentscan 的包重疊

如果包重疊,將會導致所有的feign client都會使用該配置。

首次請求失敗

@feignclient 的屬性注意點

(1) serviceid屬性已經失效,盡量使用name屬性。例如:

(2) 在使用url屬性時,在老版本的spring cloud中,不需要提供name屬性,但是在新版本(例如brixton、camden)@feignclient必須提供name屬性,並且name、url屬性支援佔位符。例如:

我本人邀約各大batj架構大牛共創spring cloud構建微服務架構的交流社群。 (群號:547793198)歡迎各路架構師、開發者,學習與交流使用spring cloud諸多強大元件的實戰經驗。

為什麼某些人會一直比你優秀,是因為他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足於現狀內心在竊喜!

合理利用自己每一分每一秒的時間來學習提公升自己,不要再用"沒有時間「來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己乙個交代!

SpringCloud微服務基礎4 Feign

spring cloud feign是一套基於netflix feign實現的宣告式服務呼叫客戶端。它使得編寫web服務客戶端變得更加簡單。我們只需要通過建立介面並用註解來配置它既可完成對web服務介面的繫結。它具備可插拔的註解支援,包括feign註解 jax rs註解。它也支援可插拔的編碼器和解碼...

SpringCloud中的gateWay 閘道器

1 api閘道器介紹 2 spring cloud gateway 3 spring cloud gateway核心概念 所有服務,都需要在nacos中註冊服務 包括閘道器 注意版本號 服務註冊nacos org.springframework.cloud groupid spring cloud ...

SpringCloud中eureka治理元件的原理

當新增了乙個eureka client元件到乙個springboot工程時,依賴,屬性,註解會啟動乙個eureka client程序,完成和服務端互動 1.1註冊 程式啟動時會攜帶自身的資訊,包括服務名稱,包括ip位址,包括埠號,等引數,以http協議請求訪問 defaultzone 可以通過 eu...