我对使用 Play 框架和 Akka 进行编程相当陌生,尽管我已经阅读了一段时间。我现在正在默认/基本 Play 环境中启动概念验证应用程序。我的问题源于 Play (http://www.playframework.org/documentation/2.0.1/ScalaWS) 中的 web 服务客户端 api。
此应用程序基本上需要以尽可能可扩展和高性能的方式调解对远程 SOAP Web 服务的调用。浏览器在 JSON 中进行 ajax 调用,Play 应用程序需要将它们转换为 SOAP/XML,反之亦然。
如果我直接通过控制器使用 play web 服务客户端,这些调用可以是异步的,这比我们现在做的(阻塞)要好得多。但是,我不清楚这在重负载下究竟会如何表现。并发/线程管理会很大程度上留给底层的 Netty 服务器吗?我有办法调吗?
另一种方法是使用控制器中的 Akka Actor 系统,在那里我可以控制路由策略、池大小、容错等。如果我采用这种方法,使用 Play 的异步 WS 客户端是否仍然有意义?如果是这样,这种方法(组成期货?)会是推荐的模式吗?
另一个似乎使 Akka 方法更具吸引力的因素是该应用程序最终将承担其他一些职责,因此我们可以控制/调整允许给该 ActorSystem 的资源并降低整个应用程序被 SOAP 服务拖累的风险。