2017-04-06 16 views
0

私の主な目標は、httpclientを静かにプールすることです。私は、httpclientを与えるメソッドを呼びたいと思います。すべての残りの呼び出しに対して、あまりにも多くのリソースを使用すると、新しいhttpclientインスタンスが追加され、物事など...それのためのベストプラクティスはありますか?httpclientをプールする最良の方法は何ですか?

+0

http://stackoverflow.com/help/how-to-askを読んで質問に適切な変更を加えてください。 – zloster

+0

https://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html –

答えて

1

あなたは、Apache HTTPクライアントを参照する場合、あなたは以下の手順に従うことができる:それはあなたが安全にそれを再利用することができ、スレッドセーフですので、

  1. は、一度だけのApache HTTPクライアントを開始します。 Springを使用する場合、それをBeanとしてSpringコンテキストに格納することは安全です。 http://hc.apache.org/httpclient-3.x/performance.html

  2. HTTPクライアントのインスタンス自体がプールされていないにもかかわらず、パフォーマンスを向上させるためにできることはプールされた接続マネージャをオンに設定することですHTTPクライアント。詳細はhttps://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.htmlの次のリンクを参照してください。 (そのページの「Pooling Connection Manager」を検索してください)。



    PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); 
    // Increase max total connection to 200 
    cm.setMaxTotal(200); 
    // Increase default max connection per route to 20 
    cm.setDefaultMaxPerRoute(20); 
    // Increase max connections for localhost:80 to 50 
    HttpHost localhost = new HttpHost("locahost", 80); 
    cm.setMaxPerRoute(new HttpRoute(localhost), 50); 

    CloseableHttpClient httpClient = HttpClients.custom() 
      .setConnectionManager(cm) 
      .build(); 

は、この情報がお役に立てば幸いです:実際のコードは怒鳴るスニペットのようなものでなければなりません。

関連する問題