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

SpringCloud使用feign調(diào)用錯(cuò)誤的問(wèn)題

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

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

首先啟動(dòng)類上掃描接口:

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

不然編譯器會(huì)報(bào)紅色波浪線

Method has too many Body parameters 可能原因

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

1、如果是例如:

可以使用@RequestParam注解:

2、使用對(duì)象:

 

解決辦法有兩個(gè):

1、使用注解@SpringQueryMap

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

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

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

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

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

解決辦法:

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

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

3、本服務(wù)加上這兩個(gè)依賴

<!-- 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、像我們項(xiàng)目,本來(lái)我使用第3種方法解決,可能我們組長(zhǎng)說(shuō)我為什么導(dǎo)入這兩個(gè)依賴,我解釋之后,他新寫了一個(gè)POST接口用于調(diào)用,所以最后究竟選擇什么辦法,還是看你們組長(zhǎng)決定,哈哈。

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

SpringCloud之Feign調(diào)用400錯(cuò)誤問(wèn)題

項(xiàng)目在本地環(huán)境一直在正常運(yùn)行,突然測(cè)試環(huán)境大量報(bào)錯(cuò),點(diǎn)哪錯(cuò)哪.

項(xiàng)目報(bào)錯(cuò)的接口是 A服務(wù)通過(guò)feign調(diào)用B服務(wù),但是會(huì)通過(guò)兩個(gè)接口調(diào)用兩次B服務(wù)

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

這里只展示主要異常信息

feign.FeignException: status 400 reading

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

最后的最后,直接上干貨,如果上述方法你都試過(guò),但是還是沒(méi)能解決的話,那么你可能是跟我一樣的問(wèn)題.

直接貼干貨代碼:

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

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

headers = {"Connection=close"}

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

結(jié)論:

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

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

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

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

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

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

feign就會(huì)報(bào)400錯(cuò)誤,在方法上加這個(gè)headers后

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

彩蛋:

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

總結(jié)

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

相關(guān)文章

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

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

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

    Java基本語(yǔ)法小白入門級(jí)

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

    Java基于線程實(shí)現(xiàn)帶有滾動(dòng)效果的Label標(biāo)簽實(shí)例

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

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

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

    FF瀏覽器和IE下載文件亂碼問(wèn)題的解決方法

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

    Spring超詳細(xì)講解事務(wù)和事務(wù)傳播機(jī)制

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

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

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

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

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

    ChatGPT在IDEA中使用的詳細(xì)過(guò)程

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

最新評(píng)論