欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud使用feign調(diào)用錯誤的問題

 更新時間:2023年06月02日 15:32:46   作者:想學Java的小碼農(nóng)  
這篇文章主要介紹了SpringCloud使用feign調(diào)用錯誤的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringCloud使用feign調(diào)用錯誤

首先啟動類上掃描接口:

@EnableFeignClients(value = {"com.xxx.*.xxx.controller"})

不然編譯器會報紅色波浪線

Method has too many Body parameters 可能原因

方法內(nèi)參數(shù)不止一個

1、如果是例如:

可以使用@RequestParam注解:

2、使用對象:

 

解決辦法有兩個:

1、使用注解@SpringQueryMap

2、把這兩個對象整合為一個,例如把User中相關(guān)屬性寫到PageRequest中,保證只有一個對象。

Method metrics not annotated with HTTP method type (ex. GET, POST)

可能原因:接口處有方法沒有添加和@GetMapping功能類似的注解,即便具體業(yè)務沒有做,也要加上,否則導入的服務無法啟動。

調(diào)用接口得到了莫名其妙的結(jié)果

可能原因:由于現(xiàn)在大多數(shù)采用resultful風格接口,而默認的feign使用GET請求調(diào)用接口,目標接口是使用對象接收時,會轉(zhuǎn)為POST請求,你會看到日志里接口由GET自動變?yōu)榱薖OST。

解決辦法:

1、改為POST請求,如果接口是別人提供的就無法使用,因為可能別人服務已經(jīng)聯(lián)調(diào)好了,再去改很麻煩,加上別人很忙,可能也不會回頭來給你改。

2、目標接口參數(shù)加上@SpringQueryMap,不過有可能像我在協(xié)同開發(fā)的時候,服務是別人的,無法改變別人的服務,那么只能換其它方式了。

3、本服務加上這兩個依賴

<!-- httpclient -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.9</version>
</dependency>
<!-- feign-httpclient -->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
  <version>10.2.3</version>
</dependency>

4、像我們項目,本來我使用第3種方法解決,可能我們組長說我為什么導入這兩個依賴,我解釋之后,他新寫了一個POST接口用于調(diào)用,所以最后究竟選擇什么辦法,還是看你們組長決定,哈哈。

5、再說一下,其實你自己無法改變別人的接口參數(shù),你可以寫一個一樣的,只要請求地址正確,完全可以使用,例如他死活不愿意加注解,你可以在自己的新建的接口加上任意注解參數(shù),也是可以使用的,但是極其不推薦,弊端很多,但是可以用于測試,最后還是去溝通一下,找組長。再說一遍:別這么干。

SpringCloud之Feign調(diào)用400錯誤問題

項目在本地環(huán)境一直在正常運行,突然測試環(huán)境大量報錯,點哪錯哪.

項目報錯的接口是 A服務通過feign調(diào)用B服務,但是會通過兩個接口調(diào)用兩次B服務

查看測試環(huán)境日志發(fā)現(xiàn)錯誤如下:

這里只展示主要異常信息

feign.FeignException: status 400 reading

一開始我們被這個400的錯誤碼誤導了,一直查參數(shù)問題,但是換了所有參數(shù)后,還是報這個錯,總之網(wǎng)上的解決辦法能找的都找了.什么參數(shù)不對,序列化不對,參數(shù)過大,返回值過大,豪豬超時.甚至是服務器重啟都試過,還是沒能解決問題

最后的最后,直接上干貨,如果上述方法你都試過,但是還是沒能解決的話,那么你可能是跟我一樣的問題.

直接貼干貨代碼:

@RequestMapping(value ="/api/getBeingProject",headers = {"Connection=close"})
List<SysProject> getBeingProject(@RequestParam String entId);

上述是自定義client中的一個遠程方法,在方法上加入關(guān)鍵的

headers = {"Connection=close"}

這代表這次調(diào)用后,會立馬關(guān)閉回收連接.

結(jié)論:

通過公司幾位大佬各種跟源碼分析,情況可能是這樣的,

兩次調(diào)用都會從連接池去拿連接

有可能是第一次調(diào)用的連接需要2秒鐘

但是1秒就執(zhí)行完畢了,然后第二次連接就過來了

直接拿了第一次剩下的連接去用

然后就直接把本次連接拒絕掉

feign就會報400錯誤,在方法上加這個headers后

本次調(diào)用后,會立馬回收關(guān)閉連接,不給其他人拿到這次連接的機會,就解決了問題

彩蛋:

所有環(huán)境都沒問題后,發(fā)布線上,發(fā)現(xiàn)線上還是會有一個接口還出現(xiàn)同樣的問題.最后發(fā)現(xiàn)是這個接口請求的數(shù)據(jù)有點大,然后分批次去請求就解決了問題。 

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java構(gòu)造器復用方式

    java構(gòu)造器復用方式

    這篇文章主要介紹了java構(gòu)造器復用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java基本語法小白入門級

    Java基本語法小白入門級

    Java基本語法就是指java中的規(guī)則,也是一種語言規(guī)則,規(guī)范,同時也能讓您在后面的學習中避免不必要的一些錯誤和麻煩,是您學好java必修的第一門課程
    2023-05-05
  • Java基于線程實現(xiàn)帶有滾動效果的Label標簽實例

    Java基于線程實現(xiàn)帶有滾動效果的Label標簽實例

    這篇文章主要介紹了Java基于線程實現(xiàn)帶有滾動效果的Label標簽,實例分析了java線程的使用技巧及l(fā)abel標簽的實現(xiàn)方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • SpringBoot集成thymeleaf瀏覽器404的解決方案

    SpringBoot集成thymeleaf瀏覽器404的解決方案

    前后端不分離的古早 SpringMVC 項目通常會使用 thymeleaf 模板引擎來完成 html 頁面與后端接口之間的交互,如果要將項目架構(gòu)升級成 SpringBoot , thymeleaf 也可以照常集成,但有時候會踩到一些坑,所以本文給大家介紹了SpringBoot集成thymeleaf瀏覽器404的解決方案
    2024-12-12
  • FF瀏覽器和IE下載文件亂碼問題的解決方法

    FF瀏覽器和IE下載文件亂碼問題的解決方法

    大家可以看到如下截圖,下載文件出現(xiàn)了亂碼,在其他瀏覽器(IE,Chrome....)上沒有出現(xiàn)這個問題,解決方法很簡單,遇到類似問題的朋友可以了解下哦
    2013-08-08
  • Spring超詳細講解事務和事務傳播機制

    Spring超詳細講解事務和事務傳播機制

    Spring事務的本質(zhì)就是對數(shù)據(jù)庫事務的支持,沒有數(shù)據(jù)庫事務,Spring是無法提供事務功能的。Spring只提供統(tǒng)一的事務管理接口,具體實現(xiàn)都是由數(shù)據(jù)庫自己實現(xiàn)的,Spring會在事務開始時,根據(jù)當前設置的隔離級別,調(diào)整數(shù)據(jù)庫的隔離級別,由此保持一致
    2022-06-06
  • 在controller中如何設置接收參數(shù)的默認值

    在controller中如何設置接收參數(shù)的默認值

    這篇文章主要介紹了在controller中如何設置接收參數(shù)的默認值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java實現(xiàn)從jar包中讀取指定文件的方法

    Java實現(xiàn)從jar包中讀取指定文件的方法

    這篇文章主要介紹了Java實現(xiàn)從jar包中讀取指定文件的方法,涉及java針對jar文件的讀取及查找相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • ChatGPT在IDEA中使用的詳細過程

    ChatGPT在IDEA中使用的詳細過程

    這篇文章主要介紹了ChatGPT在IDEA中使用的詳細過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02

最新評論