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

高并發(fā)下restTemplate的錯(cuò)誤分析方式

 更新時(shí)間:2021年10月29日 10:20:30   作者:逍遙散人tzp  
這篇文章主要介紹了高并發(fā)下restTemplate的錯(cuò)誤分析方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

高并發(fā)下restTemplate的錯(cuò)誤分析

1. 問題現(xiàn)象和分析

org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection

此問題很明顯是連接等待超時(shí),而且是從連接池中獲取的連接。

那么就有一個(gè)很詫異的問題,這里哪來的連接池呢?然后我去跟蹤restTemplate的源碼發(fā)現(xiàn),其底層是通過apache 的httpClient實(shí)現(xiàn)了連接池。那么問題就很明顯了。就是在并發(fā)量高的時(shí)候,可能會(huì)出現(xiàn)連接池不夠用。

2. 問題解決

  • 既然分析出來是連接池不夠了,那么我們?cè)跇?gòu)建restTemplate的時(shí)候配置其底層的httpClient連接池大小,以便提高高并發(fā)的時(shí)候RestTemplate的性能。
  • 可以通過配置總體最大連接池(maxConnTotal)和單個(gè)路由連接最大數(shù)(maxConnPerRoute),默認(rèn)是(20,2)

maxConnTotal是整個(gè)連接池的大小,根據(jù)自己的業(yè)務(wù)需求進(jìn)行設(shè)置

maxConnPerRoute是單個(gè)路由連接的最大數(shù),可以根據(jù)自己的業(yè)務(wù)需求進(jìn)行設(shè)置

public RestTemplate restTemplate() {
    HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(HttpClientBuilder.create()
      .setMaxConnTotal(20)
      .setMaxConnPerRoute(20)
      .build());
    httpRequestFactory.setConnectionRequestTimeout(10000);
    httpRequestFactory.setConnectTimeout(10000);
    httpRequestFactory.setReadTimeout(10000);
    return new RestTemplate(httpRequestFactory);
   }

這樣就可以解決高并發(fā)下restTemplate連接池不夠的問題。提高其性能,使得調(diào)用restTemplate的程序性能------>

使用restTemplate出現(xiàn)的異常

1.org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class zycf.cloud.bean.SafetyResponseType] and content type [text/html]

除了所有的答案之外,如果碰巧收到了text/html,而你期望別的東西(即 application/json)

則可能表明服務(wù)器端發(fā)生了錯(cuò)誤(比如404)并且返回了錯(cuò)誤頁面而不是你的數(shù)據(jù)。

用postMan測(cè)試,果然是的,這個(gè)接口期望收到j(luò)son數(shù)據(jù),卻收到了HTML頁面

2.org.springframework.web.client.RestClientException: No HttpMessageConverter for java.util.HashMap and content type "multipart/form-data"

HashMap參數(shù)改為LinkedMultiValueMap

 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
        params.add("clientId",ZHEJIANG_CLIENT_ID );
        params.add("nonce", uuid);                      //隨機(jī)數(shù)
        params.add("timestamp", dateString);             //時(shí)間戳
        params.add("signature", signature);           //簽名
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
        /**  發(fā)送請(qǐng)求*/
        RestTemplate restTemplate = new RestTemplate();
        SafetyResponseType safetyResponseType = restTemplate.postForObject(SAFETY_CERTIFICATE_URL, requestEntity, SafetyResponseType.class );

采用這種方法反序列化的時(shí)候,如果json字符串中有相同的key,存的時(shí)候值會(huì)以數(shù)組的方式保存,

比如我們?cè)谧霰韱翁峤坏臅r(shí)候,表單數(shù)據(jù)中可能存在鍵相同值不同的情況,可以用這種方法存值。

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

相關(guān)文章

  • Java8中流的性能及流的幾個(gè)特性

    Java8中流的性能及流的幾個(gè)特性

    流(Stream)是Java8為了實(shí)現(xiàn)最佳性能而引入的一個(gè)全新的概念。接下來通過本文給大家分享Java8中流的性能,需要的朋友參考下吧
    2017-11-11
  • SpringBoot?熱搜與不雅文字過濾的實(shí)現(xiàn)

    SpringBoot?熱搜與不雅文字過濾的實(shí)現(xiàn)

    本文主要介紹了SpringBoot?熱搜與不雅文字過濾的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 如何將IDEA打成jar包并在windows后臺(tái)運(yùn)行

    如何將IDEA打成jar包并在windows后臺(tái)運(yùn)行

    在本篇文章里小編給大家分享的是關(guān)于如何將IDEA打成jar包并在windows后臺(tái)運(yùn)行知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)參考下。
    2019-08-08
  • SSH框架網(wǎng)上商城項(xiàng)目第4戰(zhàn)之EasyUI菜單的實(shí)現(xiàn)

    SSH框架網(wǎng)上商城項(xiàng)目第4戰(zhàn)之EasyUI菜單的實(shí)現(xiàn)

    SSH框架網(wǎng)上商城項(xiàng)目第4戰(zhàn)之EasyUI菜單的實(shí)現(xiàn),本文主要使用EasyUI技術(shù)簡單實(shí)現(xiàn)后臺(tái)菜單,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Maven的安裝和環(huán)境變量配置過程

    Maven的安裝和環(huán)境變量配置過程

    文章介紹了如何下載、安裝和配置Maven,包括環(huán)境變量配置和阿里云鏡像的可選配置,此外,還展示了如何在IntelliJ IDEA中新建一個(gè)Maven項(xiàng)目
    2024-11-11
  • java單例模式使用詳解

    java單例模式使用詳解

    這篇文章主要介紹了java單例模式使用方法,通常它的實(shí)現(xiàn)方式分為懶漢式實(shí)現(xiàn)和餓漢式,下面是詳細(xì)說明加示例,需要的朋友可以參考下
    2014-04-04
  • java后端調(diào)用第三方接口返回圖片流給前端的具體代碼實(shí)現(xiàn)

    java后端調(diào)用第三方接口返回圖片流給前端的具體代碼實(shí)現(xiàn)

    在前后端分離的開發(fā)中,經(jīng)常會(huì)遇到需要從后端返回圖片流給前端的情況,下面這篇文章主要給大家介紹了關(guān)于java后端調(diào)用第三方接口返回圖片流給前端的具體代碼實(shí)現(xiàn),需要的朋友可以參考下
    2024-02-02
  • springboot /tmp 臨時(shí)目錄的具體實(shí)現(xiàn)

    springboot /tmp 臨時(shí)目錄的具體實(shí)現(xiàn)

    springboot應(yīng)用服務(wù)再啟動(dòng)的時(shí)候,會(huì)在操作系統(tǒng)的/tmp目錄,本文主要介紹了springboot /tmp 臨時(shí)目錄的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • 詳解Java 中的三種代理模式

    詳解Java 中的三種代理模式

    代理(Proxy)是一種設(shè)計(jì)模式,提供了對(duì)目標(biāo)對(duì)象另外的訪問方式;這篇文章主要介紹了Java 中的三種代理模式,需要的朋友可以參考下
    2018-08-08
  • JAVA中使用JSON進(jìn)行數(shù)據(jù)傳遞示例

    JAVA中使用JSON進(jìn)行數(shù)據(jù)傳遞示例

    本篇文章主要介紹了JAVA中使用JSON進(jìn)行數(shù)據(jù)傳遞示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01

最新評(píng)論

廊坊市| 临湘市| 鸡东县| 汉寿县| 东莞市| 喀喇| 三河市| 霍林郭勒市| 江油市| 彰化县| 罗城| 张掖市| 武功县| 盐亭县| 济宁市| 临邑县| 垣曲县| 民乐县| 闸北区| 融水| 新乡县| 景宁| 沾化县| 达日县| 珠海市| 健康| 新田县| 闵行区| 胶州市| 山丹县| 甘南县| 固阳县| 甘孜县| 社会| 保靖县| 甘肃省| 清水河县| 那曲县| 祁连县| 西青区| 临海市|