2014-11-05 55 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。