本文記錄SpringCloud中Feign配置的兩種方式
使用場景
目前環境下各系統間接口基本按照Restfull規範制定,Feign作爲一個接口客戶端,在SpringCloud體系下有定義明晰,開發便捷的優勢.
同時,針對不同外部服務,我們可以通過自定義Feign的配置,來實現個性化的三方接口管理.本次介紹通過配置文件進行的全局配置及通過配置類的個性化配置兩種實現方式
技術點
- SpringCloud Feign客戶端
- SpringCloud Hystrix及Ribbon配置
SpringCloud Feign的引入
對於如何搭建Feign,網絡上有大量教程,此處引用其中一篇博客:
詳細內容可以參考博文SpringCloud實戰五:Spring Cloud Feign 服務調用
需要注意的點爲:
- 啓動主類上必須添加@EnableFeignClients
- 接口類上使用@FeignClient註解,註解可選參數介紹如下
@FeignClient(value = "", fallback = , decode404 = true, url = "")
value:
必填,若在SpringCloud的Eureka體系下,指註冊在Eureka中的服務名稱(不區分大小寫);若針對三方服務,僅僅唯一標識三方即可
fallback:
當前FeignClient的降級類,該降級類需要實現該接口
decode404:
默認false,設置爲true後會對404類的異常進行捕捉而不是異常拋出,並返回處理後的Json結果
url:
指定調用的實際路徑,若配置該參數,則在value無法匹配服務的情況下,會按照指定的url進行請求
- 接口中Get類型的請求,必須使用@RequestParam()註解入參
SpringCloud Feign的配置
對於Feign的部分高級應用,網絡上有大量教程,此處引用其中一篇博客:
詳細內容可以參考博文SpringCloud實戰六:Spring Cloud Feign 高級應用
需要注意的點爲:
- 對於Feign的熔斷超時配置,需要同時針對Hystrix及Ribbon進行超時配置,且超時判斷順序爲Feign -> Ribbon -> Hystrix,配置示例如下:
# 開啓Feign熔斷及Hystrix配置
feign:
hystrix:
enabled: true
hystrix:
command:
default:
execution:
isolation:
thread:
# 連接超時時間
timeoutInMilliseconds: 80000
# Ribbon 超時配置
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
# 同一實例最大重試次數,不包括首次調用。默認值爲0
MaxAutoRetries: 0
# 同一個微服務其他實例的最大重試次數,不包括第一次調用的實例。默認值爲1。
# 此處配置需要結合業務場景,置爲0後不再進行接口重試
MaxAutoRetriesNextServer: 0
# 是否所有操作(GET、POST等)都允許重試。默認值爲false
OkToRetryOnAllOperations: false
# 控制Feign客戶端(proxy-external)熔斷參數
# 此處配置會對全部@FeignClient(value="proxy-external")註解的類生效
feign.client.config:
# 連接超時
proxy-external.connectTimeout: 10000
# 讀超時
proxy-external.readTimeout: 10000
- 可以通過配置類對每個接口類進行單獨配置Feign規則,可參考