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

How to use .withoutSizeLimit in Akka-http (client) HttpRequest?

我正在使用 Akka 2.4.7 读取网络资源,该资源本质上是 JSON 对象流,用换行符分隔。流的大小实际上是无限的。

当消耗了大约 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.

"actual entity size (None)" 似乎有点可笑,但我真正的问题是,如何使用 HttpEntity.withSizeLimit (或者在我的情况下, .withoutSizeLimit 也应该在那里).

我的请求代码是这样的:

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

我尝试添加一个 .map( (x: HttpResponse) => x.withoutSizeLimit ),但它无法编译。无论如何,在进行客户端编程时,HttpEntity 的作用是什么?

我可以更改全局配置,但这有点不对劲。我只想针对特定请求标记 "no limits"。

作为进一步的问题,我理解在服务器端需要 max-content-length,但为什么会影响客户端?

参考文献:

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

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