如何在Akka-http(客户端)HttpRequest中使用.withoutSizeLimit?

时间:2016-06-13 06:52:05

标签: akka-http

我正在使用Akka 2.4.7来读取一个基本上是JSON对象流的Web资源,并用换行符分隔。该流的大小几乎没有限制。

当消耗大约8MB时,我得到一个例外:

[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 个答案:

答案 0 :(得分:2)

我远不是这个主题的专家,但似乎你需要将.withoutSizeLimit()添加到实体中,如:

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