2014-11-05 88 views
1

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

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

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

我可以做类似finatra(以及如何)吗?

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

+0

你可能想,如果你感兴趣的流媒体和高性能,以检查出的新成语[http4s(http://http4s.org)库。 – 2014-11-05 13:04:33

+0

谢谢。这看起来很有趣。我会看一看 – 2014-11-05 13:25:20

回答

0

这对Finatra来说目前不可行。 Finatra在收到整个请求并记忆到ChannelBuffer之前不会调用您的路由。此外,Finatra还将请求作为一个块读取,因此您不能接收超过〜2MB的任何主体。将com.twitter.finatra.config.maxRequestSize设置为高于2048的值会使其在运行时崩溃。

我已经使用NettyServerembed和“String Interpolating Routing DSL”切换到Play Framework来保留类似于Finatra的DSL。