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

微服務(wù)框架FEIGN使用常見問題分析

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

1.寫在前面

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

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

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

這些估計(jì)大家都懂吧?不會(huì)還有人不懂吧?那這個(gè)要深入學(xué)習(xí)了。哈哈

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

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

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

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);

這個(gè) menuIds 數(shù)量比較多,導(dǎo)致400 錯(cuò)誤。發(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. 非法字符錯(cuò)誤

2.2.1 錯(cuò)誤信息

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

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

2.2.2 錯(cuò)誤原因

是feign 調(diào)用的時(shí)候啟用了壓縮導(dǎ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 錯(cuò)誤信息

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

2.3.2 解決辦法

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

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

如果此時(shí)data為[{},{}]格式的JSON字符串,即JSON數(shù)組字符串,又會(huì)報(bào)參數(shù)類型不匹配的錯(cuò)誤,要把參數(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請求只能有一個(gè)body feign的post方法中,只能使用一個(gè)@RequestBody或者不帶該注解,不能使用多個(gè)@RequestBody。

否則會(huì)報(bào)錯(cuò)nested exception is java.lang.IllegalStateException: Method has too many Body parameters。

2.4.2 解決辦法

只保留一個(gè)@RequestBody注解

2.5. Read timed out問題

2.5.1 問題描述

feign調(diào)用超時(shí),會(huì)出現(xiàn)這個(gè)問題。

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

那這里我們可以進(jìn)行feign的超時(shí)時(shí)間設(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:
        #默認(rèn)時(shí)間設(shè)置為10s
        ConnectTimeOut: 10000
        ReadTimeOut: 10000
      #調(diào)用system微服務(wù),默認(rèn)時(shí)間設(shè)置為30s
      systemClient:
        ConnectTimeOut: 30000
        ReadTimeOut: 30000

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

相關(guān)文章

  • 簡單談?wù)凧ava中String類型的參數(shù)傳遞問題

    簡單談?wù)凧ava中String類型的參數(shù)傳遞問題

    這篇文章主要介紹了簡單談?wù)凧ava中String類型的參數(shù)傳遞問題的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • idea切換git地址并刷新右下角git分支

    idea切換git地址并刷新右下角git分支

    這篇文章主要介紹了idea切換git地址并刷新右下角git分支,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring中ClassPathXmlApplicationContext類的使用詳解

    Spring中ClassPathXmlApplicationContext類的使用詳解

    這篇文章主要介紹了Spring中ClassPathXmlApplicationContext類的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 淺談JAVA設(shè)計(jì)模式之享元模式

    淺談JAVA設(shè)計(jì)模式之享元模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之享元模式的的相關(guān)資料,文中詳細(xì)的介紹了享元模式的概念以及使用方法,感興趣的朋友可以了解下
    2020-06-06
  • java實(shí)現(xiàn)哈夫曼文件解壓縮

    java實(shí)現(xiàn)哈夫曼文件解壓縮

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)哈夫曼文件解壓縮,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 詳解Java實(shí)現(xiàn)的k-means聚類算法

    詳解Java實(shí)現(xiàn)的k-means聚類算法

    這篇文章主要介紹了詳解Java實(shí)現(xiàn)的k-means聚類算法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • java的io操作(將字符串寫入到txt文件中)

    java的io操作(將字符串寫入到txt文件中)

    這篇文章主要介紹了java的io操作示例,將字符串寫入到txt文件中,需要的朋友可以參考下
    2014-04-04
  • Java 滑動(dòng)窗口最大值的實(shí)現(xiàn)

    Java 滑動(dòng)窗口最大值的實(shí)現(xiàn)

    這篇文章主要介紹了Java 滑動(dòng)窗口最大值,給定一個(gè)數(shù)組 nums,有一個(gè)大小為 k 的滑動(dòng)窗口從數(shù)組的最左側(cè)移動(dòng)到數(shù)組的最右側(cè)。感興趣的可以了解一下
    2021-05-05
  • java語言實(shí)現(xiàn)猜數(shù)字游戲

    java語言實(shí)現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細(xì)介紹了java語言實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • java加密MD5實(shí)現(xiàn)及密碼驗(yàn)證代碼實(shí)例

    java加密MD5實(shí)現(xiàn)及密碼驗(yàn)證代碼實(shí)例

    這篇文章主要介紹了java加密MD5實(shí)現(xiàn)及密碼驗(yàn)證代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評論