問題タブ [apache-httpasyncclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1463 参照

java - Apache Async Http クライアントを使用した非同期応答ストリーミング

Azureストレージからオブジェクトをストリーミングするためにapache async http clientを使用しています。

ストリームが関連付けられている HttpResponse オブジェクトを返すだけで済みます。私のクライアントは、ファイルをローカルに保存するために実際にそのストリームから読み取る必要があります。

したがって、Apache Async クライアントは BasicAsyncResponseConsumer を使用します。これは、完了したコールバックを呼び出す前に、ファイル全体をローカル メモリに実際にバッファリングします。

AbstractAsyncResponseConsumer の独自の実装を作成して、実際に最初に保存するのではなく、応答本文をストリーミングできるようにしようとしていますが、今までそうすることができませんでした。

参照用の基本的な消費者クラスは次のとおりです->

}

そして、リクエストを送信してレスポンスを返すコードは次のとおりです->

HttpResponse オブジェクトの CompletableFuture をクライアントに返します。

HTTP クライアントがすべての応答本文を最初にローカル バッファーで読み取るのを待つべきではありません。

理想的には、応答オブジェクトで提供されるストリームから直接コピーを開始する必要があります。

目的の結果を得るには、コンシューマーの実装に何を追加する必要がありますか?

0 投票する
1 に答える
107 参照

apache-httpasyncclient - CountDownLatch のカウントがゼロになったときに欠落している HTTP 要求はどこにありますか?

CloseableHttpAsyncClientクライアントを使用して一連の http 要求を送信するマルチスレッド コードをテストしています (以下のコードの抜粋を参照)。

次の出力を取得しています。

そのため、スレッドのうち 2 つは 1000 件のリクエストすべてを正しく実行し、他の 2 つのスレッドには正しくキャプチャされた接続エラーがあり、スレッドの 1 つ (番号 1) は 999 件のリクエストを完了し、失敗またはキャンセルの通知はありませんでした。

私の質問は次のとおりです。

  1. 失敗したメソッドで失敗したリクエストを理解する方法はありますか?

  2. すべてのリクエストが完了していないのに、失敗、キャンセル、または例外が発生してカウントダウンの数が 0 にならないのはなぜですか?

    /li>

よろしくお願いします。