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

微服務框架FEIGN使用常見問題分析

 更新時間:2022年08月18日 11:09:43   作者:llsydn  
這篇文章主要為大家介紹了微服務框架FEIGN常見問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1.寫在前面

很多時候,我們在使用微服務框架的時候,就基本上少不了與feign打交道。

畢竟服務之間的調(diào)用,基本上都不會用http調(diào)了,這樣顯得有點麻煩了,feign更方便了。

而且feign,還自帶了負載均衡的策略(ribbon提供),如果我們的服務是集群的,feign還能負載調(diào)用。

這些估計大家都懂吧?不會還有人不懂吧?那這個要深入學習了。哈哈

在用feign的日常中,難免會遇到些問題,那下面,我來總結(jié)下,我在項目開發(fā)中遇到的問題嘍。

哈哈,雖說不是大問題,但至少是點經(jīng)驗分享嘍,希望可以幫助到大家。

好啦,下面開始嘍?。?!

2. FEIGN 常見問題

2.1 400 Bad Request 問題

2.1.1 問題描述

在使用feign調(diào)用的使用出現(xiàn)400 Bad request的問題。

2.1.2 代碼如下

@PostMapping("/llsydn/getMenusByIdsAndTypes")
List<SysMenuDto> getMenusByIdsAndTypes(@RequestParam("menuIds") String menuIds,
                                       @RequestParam("menuType") String menuType);

這個 menuIds 數(shù)量比較多,導致400 錯誤。發(fā)現(xiàn)問題出在menuIds 跟在URL后面。

2.1.3 解決辦法

將方法修改為:

@PostMapping("/llsydn/getMenusByIdsAndTypes")
List<SysMenuDto> getMenusByIdsAndTypes(@RequestBody MultiValueMap<String,String> queryParam);

調(diào)用方法修改成:

public List&lt;SysMenuDto&gt; getMenusByIdsAndNotType(String menuIds, String menuType){
    MultiValueMap valueMap=new LinkedMultiValueMap();
    valueMap.add("menuIds",menuIds);
    valueMap.add("menuType",menuType);
    return systemClient.getMenusByIdsAndTypes(valueMap);
}

2.2. 非法字符錯誤

2.2.1 錯誤信息

在系統(tǒng)調(diào)用系統(tǒng)腳本的接口的時候拋出如下的錯誤。

Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens

2.2.2 錯誤原因

是feign 調(diào)用的時候啟用了壓縮導致的。

3.2.3 解決辦法

  • 1.關(guān)閉壓縮即可。

將配置改成:

feign.compression.request.enabled=false
feign.compression.response.enabled=false
  • 2.或者使用okHttp
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
</dependency>

2.3. 字符串中文亂碼問題

2.3.1 錯誤信息

在Feign調(diào)用時,傳到目標服務的方法中,字符串里的中文變成問號了

2.3.2 解決辦法

在Feign的接口的注解中指定consumes字符集:

@PostMapping(value = "/portal/core/appdata/install",consumes = "application/json;charset=UTF-8")
void install(@RequestBody String data);

如果此時data為[{},{}]格式的JSON字符串,即JSON數(shù)組字符串,又會報參數(shù)類型不匹配的錯誤,要把參數(shù)改為對象數(shù)組或者List對象:

@PostMapping(value = "/portal/core/appdata/install",consumes = "application/json;charset=UTF-8")
void install(@RequestBody Object[] data);

2.4. too many Body parameters問題

2.4.1 問題描述

feign的post請求只能有一個body feign的post方法中,只能使用一個@RequestBody或者不帶該注解,不能使用多個@RequestBody。

否則會報錯nested exception is java.lang.IllegalStateException: Method has too many Body parameters。

2.4.2 解決辦法

只保留一個@RequestBody注解

2.5. Read timed out問題

2.5.1 問題描述

feign調(diào)用超時,會出現(xiàn)這個問題。

一般來說當我們的業(yè)務需要處理的時間很大時,會出現(xiàn)這個問題。例如,上傳excel文件。

那這里我們可以進行feign的超時時間設(shè)置。這里只針對指定的feign client

2.5.2 解決辦法

@FeignClient(name = "systemClient")
public interface SystemClient {
    @RequestMapping(path = "/llsydn/importExcel", consumes = {"multipart/form-data"}) 
    JsonResult importExcel(@RequestPart(name="file") MultipartFile file);
}
  • yml配置
feign:
  httpclient:
    enabled: true
  client:
    config:
      default:
        #默認時間設(shè)置為10s
        ConnectTimeOut: 10000
        ReadTimeOut: 10000
      #調(diào)用system微服務,默認時間設(shè)置為30s
      systemClient:
        ConnectTimeOut: 30000
        ReadTimeOut: 30000

以上就是微服務框架FEIGN常見問題分析的詳細內(nèi)容,更多關(guān)于微服務框架FEIGN問題的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mockito mock Kotlin Object類方法報錯解決方法

    Mockito mock Kotlin Object類方法報錯解決方法

    這篇文章主要介紹了Mockito mock Kotlin Object類方法報錯解決方法,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 從Android源碼剖析Intent查詢匹配的實現(xiàn)

    從Android源碼剖析Intent查詢匹配的實現(xiàn)

    這篇文章主要介紹了從Android源碼剖析Intent查詢匹配的實現(xiàn),Intent部分的源碼為Java代碼,需要的朋友可以參考下
    2015-07-07
  • java 中List按照date排序的實現(xiàn)

    java 中List按照date排序的實現(xiàn)

    這篇文章主要介紹了java 中List按照date排序的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 從0到1學SpringCloud之SpringCloud?gateway網(wǎng)關(guān)路由配置示例詳解

    從0到1學SpringCloud之SpringCloud?gateway網(wǎng)關(guān)路由配置示例詳解

    Spring?Cloud?Gateway的目標提供統(tǒng)一的路由方式且基于Filter?鏈的方式提供了網(wǎng)關(guān)基本的功能,?例如:安全、監(jiān)控、指標和限流?,這篇文章主要介紹了從0到1學SpringCloud之SpringCloud?gateway網(wǎng)關(guān)路由配置示例詳解,需要的朋友可以參考下
    2023-04-04
  • Java使用JCommander實現(xiàn)解析命令行參數(shù)

    Java使用JCommander實現(xiàn)解析命令行參數(shù)

    jcommander?是一個只有幾十?kb?的?Java?命令行參數(shù)解析工具,可以通過注解的方式快速實現(xiàn)命令行參數(shù)解析,本文就來和大家介紹一下JCommander是如何解析命令行參數(shù)吧
    2023-06-06
  • HashMap確定key的存儲位置的源碼分析

    HashMap確定key的存儲位置的源碼分析

    HashMap 作為 Java 中最常用的數(shù)據(jù)結(jié)構(gòu)之一,用于存儲和管理鍵值對,HashMap 基于哈希函數(shù)實現(xiàn),能通過將 key 映射到特定的位置來實現(xiàn)快速存儲、查找和刪除數(shù)據(jù),接下來將從源碼角度分析以通俗易懂的方式向大家講解一下 HashMap 如何確定 key 的存儲位置的
    2023-07-07
  • MyBatis一級緩存避坑完全指南

    MyBatis一級緩存避坑完全指南

    這篇文章主要給大家介紹了關(guān)于MyBatis一級緩存避坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • Java實戰(zhàn)之在線租房系統(tǒng)的實現(xiàn)

    Java實戰(zhàn)之在線租房系統(tǒng)的實現(xiàn)

    這篇文章主要介紹了利用Java實現(xiàn)的在線租房系統(tǒng),文中用到了SpringBoot、Redis、MySQL、Vue等技術(shù),文中示例代碼講解詳細,需要的可以參考一下
    2022-02-02
  • Java方法調(diào)用解析靜態(tài)分派動態(tài)分派執(zhí)行過程

    Java方法調(diào)用解析靜態(tài)分派動態(tài)分派執(zhí)行過程

    這篇文章主要為大家介紹了Java方法調(diào)用解析靜態(tài)分派動態(tài)分派執(zhí)行過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Spring你不知道的一種解耦模式

    Spring你不知道的一種解耦模式

    本文介紹一種方法,服務定位模式Service?Locator?Pattern來解決,它幫助我們消除緊耦合實現(xiàn)及其依賴性,并提出將服務與其具體類解耦
    2023-01-01

最新評論

聂荣县| 黄梅县| 阿尔山市| 米脂县| 红原县| 思茅市| 沧州市| 集安市| 平乡县| 平乡县| 云安县| 来宾市| 金华市| 牙克石市| 青铜峡市| 辛集市| 陆良县| 邛崃市| 庄河市| 张家界市| 察雅县| 南城县| 垣曲县| 四川省| 寿阳县| 定陶县| 巴塘县| 潼南县| 安宁市| 同德县| 汾阳市| 泗洪县| 赣榆县| 上虞市| 镇宁| 巴林右旗| 泰宁县| 泰州市| 东山县| 瓦房店市| 临海市|