2

Apache非同期httpクライアントでリダイレクト戦略を設定するにはどうすればよいですか? 私はこのようなものを持っています(スカラコード)。コメント付きのコードは期待どおりに機能しますが、1 秒あたり 1 つのホストに対して 4 つを超える同時要求を実行することはできません。

object HttpClientManager {
def createHttpClient(): CloseableHttpAsyncClient = { //cm: NHttpClientConnectionManager
    /*


    val httpClient = HttpAsyncClients
        .custom()
        .setDefaultRequestConfig(config)
        //.setConnectionManager(cm)
        .build()
*/
    // val config = RequestConfig.custom()
  //           .setSocketTimeout(3000)
  //           .setConnectTimeout(3000).build();

    val socketConfig = SocketConfig.custom()
            .setSoTimeout(15000)
            .build();
    val connectionConfig = ConnectionConfig.custom()
            .setBufferSize(8 * 1024)
            .setFragmentSizeHint(8 * 1024)
            .build();

        val ioreactor = new DefaultConnectingIOReactor();
        val mgr = new PoolingNHttpClientConnectionManager(ioreactor);
        mgr.setDefaultSocketConfig(socketConfig);
        mgr.setDefaultConnectionConfig(connectionConfig);
        mgr.setDefaultMaxPerRoute(100)
        mgr.setMaxTotal(200)
        val httpclient = HttpAsyncClients.createMinimal(mgr);

    httpclient.start()
    httpclient
}
 }
4

2 に答える 2

2
CloseableHttpAsyncClient client = HttpAsyncClients.custom()
       .setRedirectStrategy(LaxRedirectStrategy.INSTANCE)
       .build();

によって作成された最小限のクライアントはHttpAsyncClients#createMinimal、「本格的な」対応するものとまったく同じ接続管理コードを使用します。ただし、プロキシ サポート、リダイレクト、認証、状態管理など、重要でないプロトコルの側面を犠牲にする準備ができているシナリオでパフォーマンスを向上させるために、最小限のプロトコル パイプラインのみを提供するという点で異なります。そのため、最小限の実装ではリダイレクトを処理しません。

于 2013-11-07T17:04:34.193 に答える