最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2023年06月02日 15:32:46   作者:想學(xué)Java的小碼農(nóng)  
這篇文章主要介紹了SpringCloud使用feign調(diào)用錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(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、使用對象:

 

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

1、使用注解@SpringQueryMap

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

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

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

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

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

解決辦法:

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

2、目標(biāo)接口參數(shù)加上@SpringQueryMap,不過有可能像我在協(xié)同開發(fā)的時(shí)候,服務(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)目,本來我使用第3種方法解決,可能我們組長說我為什么導(dǎo)入這兩個(gè)依賴,我解釋之后,他新寫了一個(gè)POST接口用于調(diào)用,所以最后究竟選擇什么辦法,還是看你們組長決定,哈哈。

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

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

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

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

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

這里只展示主要異常信息

feign.FeignException: status 400 reading

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

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

直接貼干貨代碼:

@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é)論:

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

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

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

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

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

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

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

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

彩蛋:

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

總結(jié)

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

相關(guān)文章

  • java并發(fā)等待條件的實(shí)現(xiàn)原理詳解

    java并發(fā)等待條件的實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了java并發(fā)等待條件的實(shí)現(xiàn)原理詳解,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • mybatis plus的3種查詢方式(小結(jié))

    mybatis plus的3種查詢方式(小結(jié))

    這篇文章主要介紹了mybatis plus的3種查詢方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Set接口深入剖析之HashSet、LinkedHashSet和TreeSet

    Set接口深入剖析之HashSet、LinkedHashSet和TreeSet

    這篇文章主要介紹了Set接口深入剖析之HashSet、LinkedHashSet和TreeSet,LinkedHashSet是HashSet的子類,實(shí)現(xiàn)了Set接口,LinkedHashSet底層是一個(gè)LinkedHashMap,底層維護(hù)了一個(gè)數(shù)組+雙向鏈表,需要的朋友可以參考下
    2023-09-09
  • MyBatis中防止SQL注入講解

    MyBatis中防止SQL注入講解

    這篇文章主要介紹了MyBatis中防止SQL注入,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-12-12
  • Spring如何將配置文件中的簡單值注入Bean中

    Spring如何將配置文件中的簡單值注入Bean中

    Spring 提供了幾種優(yōu)雅的方式來將配置文件中的簡單值(如字符串、數(shù)字、布爾值等)注入到 Bean 中,下面小編就為大家介紹一下兩種主流的方法吧
    2025-07-07
  • Java 動(dòng)態(tài)代理深入理解

    Java 動(dòng)態(tài)代理深入理解

    這篇文章主要介紹了Java 動(dòng)態(tài)代理深入理解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java輕松批量替換Word文檔文字內(nèi)容的操作步驟

    Java輕松批量替換Word文檔文字內(nèi)容的操作步驟

    Word 文檔常用于撰寫報(bào)告、合同、通知、技術(shù)文檔等,當(dāng)文檔內(nèi)容較多時(shí),如果需要修改或替換某些詞語、短語,甚至是格式化文本,手動(dòng)操作往往效率很低,所以本文給大家介紹了Java實(shí)現(xiàn)輕松批量替換Word文檔文字內(nèi)容,需要的朋友可以參考下
    2025-09-09
  • 2023最新版本idea用maven新建web項(xiàng)目(親測不報(bào)錯(cuò))

    2023最新版本idea用maven新建web項(xiàng)目(親測不報(bào)錯(cuò))

    這篇文章主要給大家介紹了關(guān)于2023最新版本idea用maven新建web項(xiàng)目,Maven是當(dāng)今Java開發(fā)中主流的依賴管理工具,文中介紹的步驟親測不報(bào)錯(cuò),需要的朋友可以參考下
    2023-07-07
  • SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例

    SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例

    本篇文章主要介紹了SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例,可以限制登陸次數(shù),有興趣的同學(xué)可以了解一下。
    2017-03-03
  • SpringBoot配置LocalDateTime格式化方式

    SpringBoot配置LocalDateTime格式化方式

    文章主要介紹了Spring?Boot中處理日期格式化和反格式化的方法,包括配置Jackson的`@JsonFormat`注解和全局配置日期轉(zhuǎn)換器`LocalDateTimeConvert`,以及`ConversionService`中`convert`的添加時(shí)機(jī)和過程
    2026-01-01

最新評論

福安市| 井冈山市| 浏阳市| 五家渠市| 台东市| 汝州市| 棋牌| 嘉定区| 太仆寺旗| 鹿邑县| 双辽市| 阿拉尔市| 宜川县| 惠州市| 涿鹿县| 呼玛县| 商水县| 威宁| 前郭尔| 思茅市| 丽江市| 静宁县| 平南县| 南康市| 漠河县| 塔河县| 漾濞| 陆川县| 伊金霍洛旗| 长子县| 衡阳县| 泾阳县| 通道| 赞皇县| 济宁市| 当雄县| 沁阳市| 沙河市| 临漳县| 甘泉县| 花垣县|