一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 高并發下restTemplate的錯誤分析方式

高并發下restTemplate的錯誤分析方式

2022-03-06 01:00逍遙散人tzp Java教程

這篇文章主要介紹了高并發下restTemplate的錯誤分析方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

高并發下restTemplate的錯誤分析

1. 問題現象和分析

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

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

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

2. 問題解決

  • 既然分析出來是連接池不夠了,那么我們在構建restTemplate的時候配置其底層的httpClient連接池大小,以便提高高并發的時候RestTemplate的性能。
  • 可以通過配置總體最大連接池(maxConnTotal)和單個路由連接最大數(maxConnPerRoute),默認是(20,2)

maxConnTotal是整個連接池的大小,根據自己的業務需求進行設置

maxConnPerRoute是單個路由連接的最大數,可以根據自己的業務需求進行設置

?
1
2
3
4
5
6
7
8
9
10
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);
   }

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

使用restTemplate出現的異常

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)

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

用postMan測試,果然是的,這個接口期望收到json數據,卻收到了HTML頁面

高并發下restTemplate的錯誤分析方式

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

HashMap參數改為LinkedMultiValueMap

?
1
2
3
4
5
6
7
8
9
10
11
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
       params.add("clientId",ZHEJIANG_CLIENT_ID );
       params.add("nonce", uuid);                      //隨機數
       params.add("timestamp", dateString);             //時間戳
       params.add("signature", signature);           //簽名
       HttpHeaders headers = new HttpHeaders();
       headers.setContentType(MediaType.MULTIPART_FORM_DATA);
       HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
       /**  發送請求*/
       RestTemplate restTemplate = new RestTemplate();
       SafetyResponseType safetyResponseType = restTemplate.postForObject(SAFETY_CERTIFICATE_URL, requestEntity, SafetyResponseType.class );

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

比如我們在做表單提交的時候,表單數據中可能存在鍵相同值不同的情況,可以用這種方法存值。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_29738509/article/details/89962112

延伸 · 閱讀

精彩推薦
  • Java教程Java內存區域和內存模型講解

    Java內存區域和內存模型講解

    今天小編就為大家分享一篇關于Java內存區域和內存模型講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來...

    *是杯酒漸濃*7822021-07-13
  • Java教程java設計模式學習之裝飾模式

    java設計模式學習之裝飾模式

    這篇文章主要為大家詳細介紹了java設計模式學習之裝飾模式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    南國木棉7082021-01-17
  • Java教程Java讀取文件方法匯總

    Java讀取文件方法匯總

    這篇文章主要為大家詳細介紹了Java讀取文件方法,按字節讀取文件內容、按字符讀取文件內容、隨機讀取文件內容等,具有一定的參考價值,感興趣的小伙...

    Java開發-擱淺4972020-07-20
  • Java教程SpringBoot使用WebJars統一管理靜態資源的方法

    SpringBoot使用WebJars統一管理靜態資源的方法

    這篇文章主要介紹了SpringBoot使用WebJars統一管理靜態資源的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    yizhiwazi9572021-06-25
  • Java教程Kotlin基礎教程之dataclass,objectclass,use函數,類擴展,socket

    Kotlin基礎教程之dataclass,objectclass,use函數,類擴展,socket

    這篇文章主要介紹了Kotlin基礎教程之dataclass,objectclass,use函數,類擴展,socket的相關資料,需要的朋友可以參考下 ...

    天命劍主4652020-10-31
  • Java教程Java:泛型知識知多少

    Java:泛型知識知多少

    這篇文章主要介紹了java泛型基礎知識及通用方法,從以下幾個方面介紹一下java的泛型: 基礎, 泛型關鍵字, 泛型方法, 泛型類和接口,感興趣的可以了解一下...

    Carson_Ho7772021-12-08
  • Java教程常用數字簽名算法RSA與DSA的Java程序內實現示例

    常用數字簽名算法RSA與DSA的Java程序內實現示例

    這篇文章主要介紹了常用數字簽名算法RSA與DSA的Java程序內實現示例,一般來說DSA算法用于簽名的效率會比RSA要快,需要的朋友可以參考下 ...

    匆忙擁擠repeat1672020-04-15
  • Java教程Java使用正則表達式(regex)匹配中文實例代碼

    Java使用正則表達式(regex)匹配中文實例代碼

    本文給大家分享java使用正則表達式匹配中文的實例代碼,以及java中要匹配中文的正則表達式兩種寫法,感興趣的朋友通過本文一起看看吧...

    不會撒謊的烏索普5642020-07-11
主站蜘蛛池模板: 欧美一区二区三区综合色视频 | 精品夜夜澡人妻无码AV蜜桃 | 天天综合色网 | 邪恶肉肉全彩色无遮盖 | 543精品视频 | 免费看男女做好爽好硬视频 | 日本免费高清在线观看播放 | 毛片在线网址 | 欧美va在线观看 | 网红思瑞一区二区三区 | 亚洲香蕉网久久综合影院3p | 国产一区二区三区在线观看视频 | chinesefree普通对话 | 精品视频在线播放 | 免费xxxx日本大片在线观看 | 办公室恋情在线观看 | 成人福利在线观看 | 狠狠色综合久久久久尤物 | 日韩欧美推理片免费看完整版 | les在宿舍吃她奶 | 色中色导航 | 亚洲精品成人456在线播放 | 免费网址视频在线看 | 免费在线看a| 亚洲精品午夜在线观看 | 草莓视频深夜释放 | 无颜之月全集免费观看 | 精品在线播放 | 欧美亚洲影院 | 人人揉揉香蕉 | 精品欧美一区二区三区四区 | 狠狠色综合久久婷婷 | 美女林柏欣21p人体之仓之梦 | 含羞草传媒一天免费看下 | 教练你好大轻点漫 | 国产午夜免费不卡精品理论片 | 国产主播精品在线 | 男人午夜视频在线观看 | 十六以下岁女子毛片免费 | 亚洲精品综合一二三区在线 | 99欧美精品 |