2016-10-05 3 views
0

私はHttpClient 4.5.2を使用しています。ここでは、永続的なディスクストアにファイルを保存するためにEhCacheを使用するCachingHttpClientをセットアップしました。これは、最初のダウンロードが完了した後に行われる通常の要求に対して機能します。同時リクエストに対してHttpClientキャッシュを使用できますか?

複数のスレッドが同じファイルを初めてダウンロードしようとするとどうなるのでしょうか。 FutureRequestExecutionServiceを使用する必要がありますか、これを実現するにはより良い方法がありますか?アプリケーションがダウンロードしなければならないファイルは膨大なものになる可能性があり、ファイルごとに複数のリクエストが必要になります。

+0

私はそれが既に同時の要求で動作していると思います。 –

答えて

0

デフォルトでは、Ehcacheのようなキャッシュソリューションはthundering herd problemを解決しません。

したがって、HttpClientがこの使用例を処理する方法によって異なります。

Ehcacheはread-through patternをサポートしています。これは、単一の要求によってのみキャッシュ値がロードされ、他の要求が待機することを保証することでこの問題を解決します。

+0

あなたの答えをありがとう、私の質問は主にhttpclientライブラリに向けられていましたが、それ以上の活動がないので、私はそれを受け入れます。私は、実際に動作していることがわかるので、httpclientがリードスルーパターンを利用していると仮定することができます。 –

+0

私は.maxEntriesLocalHeap(1)を設定していますが、ファイルをダウンロードするたびにそのキャッシュのヒープが上がっているのがわかります。 80mb xmlファイルの場合、最大500MBを要します。これはehcacheの設定と関係があると思いますか? –

関連する問題