1

这是我的用例:我正在实现一个 finatra 服务器,它应该能够接收许多并发的大请求。这些请求有一个很大的主体(几兆字节),由许多连接在一起的小 json 对象组成。

我想避免将整个请求正文加载到内存中。我正在寻找一种方法来分块读取请求正文,并使用支持这种异步解析的 json 解析器。

在 node.js 中,这可以通过使用 jsonp 包来实现(参见示例 - https://github.com/jaredhanson/node-jsonsp/blob/master/examples/twitter-stream/app.js)。

我可以用finatra(以及如何)做类似的事情吗?

PS - 我也在这里发布了这个问题,但到目前为止没有得到任何答案。

4

1 回答 1

0

Finatra 目前无法做到这一点。在收到整个请求并将其存储到 ChannelBuffer 之前,Finatra 不会调用您的路由。此外,Finatra 还将请求读取为单个块,因此您无法接收任何超过 ~2MB 的正文。设置com.twitter.finatra.config.maxRequestSize为高于 2048 将导致它在运行时崩溃。

我已经使用NettyServer 嵌入和“字符串插值路由 DSL ”切换到 Play Framework,以保留类似于 Finatra 的 DSL。

于 2015-04-17T20:59:29.863 回答