【问题标题】:How to use .withoutSizeLimit in Akka-http (client) HttpRequest?如何在 Akka-http(客户端)HttpRequest 中使用 .withoutSizeLimit?
【发布时间】:2016-06-13 06:52:04
【问题描述】:

我正在使用 Akka 2.4.7 读取 Web 资源,该资源本质上是 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.

“实际实体大小(无)”似乎有点好笑,但我真正的问题是,如何使用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,但为什么会影响客户端?

参考文献:

【问题讨论】:

    标签: akka-http


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。不幸的是,我不再积极处理该代码。希望其他人觉得这很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2015-12-05
    • 1970-01-01
    相关资源
    最近更新 更多