这是我的用例: 我正在实现一个finatra服务器,它应该能够接收许多并发的大型请求。 这些请求有一个很大的主体(几兆字节),由许多小的json对象组成,连接起来。
我想避免将整个请求主体加载到内存中。我正在寻找一种以块的形式读取请求体的方法,并使用支持这种异步解析的json解析器。
在node.js中,这可以通过使用jsonp包来实现(参见示例 - https://github.com/jaredhanson/node-jsonsp/blob/master/examples/twitter-stream/app.js)。
我可以用finatra(以及如何)做类似的事情吗?
PS - 我还发布了问题here,但到目前为止没有得到答案。
答案 0 :(得分:0)
Finatra目前无法实现这一目标。在收到整个请求并将其记忆到ChannelBuffer之前,Finatra不会拨打您的路线。此外,Finatra还将请求作为单个块读取,因此您无法接收超过~2MB的任何身体。将com.twitter.finatra.config.maxRequestSize
设置为高于2048的值会导致它在运行时崩溃。
我已使用NettyServer
embed和“String Interpolating Routing DSL”切换到Play Framework,以保留类似于Finatra的DSL。