2016-06-13 14 views
1

私はAkka 2.4.7を使用して、基本的に改行で区切られたJSONオブジェクトのストリームであるWebリソースを読み込んでいます。ストリームのサイズは事実上無制限です。Akka-http(クライアント)で.withoutSizeLimitを使用する方法HttpRequest?

8メガバイトが消費されたの周りに、私は例外を取得:

[error] (run-main-0) EntityStreamSizeException: actual entity size (None) exceeded content length limit (8388608 bytes)! You can configure this by setting `akka.http.[server|client].parsing.max-content-length` or calling `HttpEntity.withSizeLimit` before materializing the dataBytes stream. 

「実際のエンティティのサイズ(なし)」ビット面白いようだが、私の本当の問題は、HttpEntity.withSizeLimitを使用する方法(またはを私の場合は、むしろ.withoutSizeLimitがあるはずです)。

私の要求コードは次のようである:

val chunks_src: Source[ByteString,_] = Source.single(req) 
    .via(connection) 
    .flatMapConcat(_.entity.dataBytes) 

私は.map((x: HttpResponse) => x.withoutSizeLimit)を追加しようとしたが、それはコンパイルされません。クライアント側のプログラミングを行うときのHttpEntityの役割は何ですか?

グローバル設定を変更することはできますが、そのような点はありません。特定のリクエストに対してのみ「制限なし」とフラグを立てたいと思います。

さらなる質問として、私はサーバ側でmax-content-lengthの必要性を理解していますが、なぜクライアントに影響しますか?

参考文献:

答えて

1

私はこのトピックに関する専門家から遠いんだけど、あなたが必要と思われます次のようなエンティティに.withoutSizeLimit()を追加します。

Source.single(req) 
    .via(connection) 
    .flatMapConcat(_.entity.withoutSizeLimit().dataBytes) 
+0

ありがとう。残念ながら、私はもはやそのコードで積極的に働いていません。うまくいけば、他の人がこれが便利だと思うでしょ – akauppi

関連する問題