FeignClient使用問題(一)

2021-08-25 19:29:48 字數 1924 閱讀 4665

首先這個專案起始是參考前人做的乙個專案拷貝過來修改的,所以在對於介面的書寫方式幾乎是無異的,除了他們專案引用了更多的jar包以外;然後就按部就班地使用了feignclient開始了服務呼叫,可是並沒有像他們專案過得那麼順利,總是在client介面呼叫處遇到了傳參的問題。

①前人不需要指定請求方式,可是我這邊必須要給他指定一下方式,不然預設是get方式;

②對於這個requestparam註解導致的400、415等問題一直是沒有發現的;剛開始在考慮是否是包名類名需要完全一致等原因,排除這個的可能後;先用簡單引數傳輸,依然不行。

③在參考了網上部落格的「深入理解feignclient」之後,

加入了

com.netflix.feign

的依賴,經測試解決了傳輸問題,但是只能支援字串傳輸,對於物件依然會報400的問題。

④取消掉對於第③步引用的jar解決的部分問題;新建乙個簡單工程測試排除原工程可能出現的spring載入順序引起的異常情況;簡單jar引用,比較坑的是對於client介面和controller層都是拷貝原工程的**;這個時候出現了新的問題,因為在進行這個新簡單工程的package時出現了乙個不重要的報錯(說的是簡單工程與原工程的名稱相同),專案可以正常啟動,但只能用jar啟動。

⑤然後和原來一樣進行post,這時出現了controller層面的400引數問題,

(missingservletrequestparameterexception",

"message":"required waterbilldtonopassword parameter 'waterbillvo' is not present)

然後就想放棄這個簡單工程回到原工程進行post,發現原工程這時也出現了同樣的錯誤,但是在建簡單工程之前原工程的controller層可以,client層報的400。

⑥這個時候請同事幫忙看,在一番檢閱下,我建議先去掉valid註解嘗試,結果不行,好在controller層面處理比client層的呼叫的可見度要來的高,可是即使是在dispatcherservlet的斷點檢視並沒發現問題,所以只能懷疑註解的問題了;我發現requestparam這個註解除了對於傳參取別名和部分校驗外沒什麼用處,就去掉了這個註解,結果就成了;發現與controller類似的client層也應該是這個註解產生的問題,經驗證確實是;比較奇怪的是前人做的那個專案竟然沒有報這些錯誤。

總結:

經過查閱、思考和檢驗,這個問題受多餘註解的干擾,需要明確requestbody和requestparam的用法,requestbody註解用於傳輸物件、集合;而requestparam註解用於傳輸單條引數並起別名和是否必須。

⑦超時問題:從報錯中判斷超時型別是ribbon還是hystrix

# ribbon

# 請求處理的超時時間

ribbon.readtimeout: 120000

# 請求連線的超時時間

ribbon.connecttimeout: 30000

# hystrix

feign.hystrix.enabled: true

# hystrix 熔斷機制

hystrix:

sharesecuritycontext: true

command:

default:

circuitbreaker:

sleepwindowinmilliseconds: 100000

forceclosed: true

execution:

isolation:

thread:

timeoutinmilliseconds: 600000

==

關於FeignClient註解的使用,部署訪問

近來關於feignclient的使用,按理說應該現在已經是很成熟了,但目前仍然會有人有一些疑惑,就想從自己的角度去把這個如何使用做個介紹 從四個角度,了解feginclient是什麼,主要用於做什麼的,如何使用這個,如何部署訪問到 首先關於feginclient註解,主要是用於服務間進行呼叫,作用在...

FeignClient註解屬性

feignclient value run product fallback productclientservicefallback.class feignclient name runclient url localhost 8001 public inte ce productclientse...

FeignClient日誌列印

一 使用feign原生的配置方式 1 新增配置類,設定日誌級別 slf4j configuration public class feignconfig 2 為需要列印日誌的類增加配置 feignclient url public inte ce requesttestapi logging.lev...