Finatra - 以块的形式阅读请求

时间:2014-11-05 12:27:52

标签: json scala finatra

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

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

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

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

PS - 我还发布了问题here,但到目前为止没有得到答案。

1 个答案:

答案 0 :(得分:0)

Finatra目前无法实现这一目标。在收到整个请求并将其记忆到ChannelBuffer之前,Finatra不会拨打您的路线。此外,Finatra还将请求作为单个块读取,因此您无法接收超过~2MB的任何身体。将com.twitter.finatra.config.maxRequestSize设置为高于2048的值会导致它在运行时崩溃。

我已使用NettyServer embed和“String Interpolating Routing DSL”切换到Play Framework,以保留类似于Finatra的DSL。