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

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并發(fā)等待條件的實現(xiàn)原理詳解

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

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

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

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

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

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

    MyBatis中防止SQL注入講解

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

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

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

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

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

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

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

    2023最新版本idea用maven新建web項目(親測不報錯)

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

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

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

    SpringBoot配置LocalDateTime格式化方式

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

最新評論

绥棱县| 靖边县| 铜陵市| 平顺县| 霞浦县| 烟台市| 通榆县| 临湘市| 闽侯县| 武穴市| 常熟市| 金湖县| 江孜县| 道孚县| 颍上县| 临江市| 昭觉县| 平潭县| 武宁县| 汾西县| 尼玛县| 大安市| 甘孜| 青浦区| 米易县| 肃宁县| 富阳市| 黔西县| 杂多县| 竹北市| 苗栗县| 襄垣县| 平潭县| 凌海市| 微山县| 建始县| 子长县| 响水县| 凤凰县| 福贡县| 华坪县|