私はPlayフレームワークとAkkaを使ったプログラミングにかなり慣れていませんが、それらについてはしばらく読んでいます。現在、デフォルト/基本のPlay環境で概念実証アプリケーションを開始しています。私の質問は、PlayのWebサービスクライアントAPI(http://www.playframework.org/documentation/2.0.1/ScalaWS)に由来します。
このアプリケーションは基本的に、リモートのSOAPWebサービスへの呼び出しを可能な限りスケーラブルでパフォーマンスの高い方法で仲介する必要があります。ブラウザはJSONでajax呼び出しを行い、PlayアプリはそれらをSOAP / XMLに変換する必要があり、その逆も同様です。
コントローラーを介してPlayWebサービスクライアントを直接使用した場合、これらの呼び出しは非同期である可能性があります。これは、現在実行しているもの(ブロッキング)よりもはるかに優れています。ただし、これが高負荷でどのように動作するかはわかりません。同時実行/スレッド管理は、主に基盤となるNettyサーバーに任されますか?調整する方法はありますか?
別の方法は、コントローラーからAkkaアクターシステムを使用することです。ここで、ルーティングポリシー、プールサイズ、フォールトトレランスなどを制御できます。このアプローチを採用する場合でも、Playの非同期WSクライアントを使用することは理にかなっていますか?もしそうなら、このアプローチ(先物を構成する)は推奨されるパターンでしょうか?
Akkaアプローチをより魅力的にしていると思われる別の要因は、このアプリケーションが最終的に他のいくつかの責任を持つことです。そのため、このActorSystemに許可されるリソースを制御/調整し、アプリ全体がSOAPサービスによってドラッグダウンされるリスクを減らすことができます。