Play 2 アプリに API サービスを実装しています。現在、API は 5 つのサーバーで毎秒 5 ~ 7000 のリクエストを処理しています。最近、Spray.IO と Play2 のベンチマークを行ったところ、単純な http リクエストでほぼ 3 倍のパフォーマンスが得られました。
代わりに、Spray HTTP サーバーを Play アプリに埋め込むことができれば、Spray ですべてを再実装するのは避けたいと思います。
これは可能ですか?そして、これの例はありますか?
Play 2 アプリに API サービスを実装しています。現在、API は 5 つのサーバーで毎秒 5 ~ 7000 のリクエストを処理しています。最近、Spray.IO と Play2 のベンチマークを行ったところ、単純な http リクエストでほぼ 3 倍のパフォーマンスが得られました。
代わりに、Spray HTTP サーバーを Play アプリに埋め込むことができれば、Spray ですべてを再実装するのは避けたいと思います。
これは可能ですか?そして、これの例はありますか?
Spray は実際には、Web ベースの開発用の最速の JVM ベースのツールキットであると言えます。公式ブログで最新のベンチマークを確認できます。
質問は。小さな HTTP サーバー用に独自の実装を作成する場合は、スプレー缶の http ベースの api を確認する必要があります。スプレー io は、Akka IO と Java NIO の間の単なるレイヤーです。私は Play があまり得意ではありませんが、方法として、マルチビルド sbt 構成を作成するか、Spray http サーバーを使用して別のプロジェクトを作成し、REST API を介してそれらを接続することをお勧めします。
アーキテクチャは非常に単純で、最も単純なケースでは Akka アクターに基づいているため、 receive メソッドの一連のケースのように見えます。
def receive = {
case HttpRequest(GET, Uri.Path("/ping"), _, _, _) =>
sender ! HttpResponse(entity = "PONG")
}
Play 側では、ルートを記述するために Akka または Play のルーティング ファイルを使用する必要があります。
また、Spray routing apiもチェックしてください。実装と使用がはるかに簡単で、スプレーがファイルで提供できるものと非常に似ていroute
ますが、より柔軟で読みやすいです。
また、SprayのGithubリポジトリには、非常に詳細な例が多数あります。
ところで、Spray チームはまた、フロントエンド用の Play テンプレート エンジンを利用可能にし、それをTwirlと呼んでいるので、アプリケーションを Spray に移植するのにそれほど時間はかかりません。