我正在使用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
,但为什么会影响客户端?
参考文献:
答案 0 :(得分:2)
我远不是这个主题的专家,但似乎你需要将.withoutSizeLimit()
添加到实体中,如:
Source.single(req)
.via(connection)
.flatMapConcat( _.entity.withoutSizeLimit().dataBytes )