我有一个使用 Akka 的 Scala 应用程序,它接收 REST 请求,对数据库进行一些操作,并向客户端响应一些信息。事实上,我的数据库操作需要很长时间,同时我的支持 REST 的参与者无法响应新请求,即使我可以同时对数据库运行大量操作。我在我的演员中使用 javax.ws.rs 注释来启用 REST 方法。
问题;使我的应用程序能够处理大量并发请求的最佳方法是什么?
编辑:我将添加一些示例代码。
import se.scalablesolutions.akka.actor._
import javax.ws.rs._
@Path("/test")
class TestService {
@GET
def status() =
actorPool !! Status(session).
getOrElse(<error>Unable to connect to service</error>)
}
class TestActor {
def receive = {
case Status() => {
reply(SomeObject.slowDBMethod)
}
}
}
case class Status()
EDIT2:这就是我在日志中得到的。我正在尽可能快地从浏览器发送三个请求,因为我可以切换选项卡并按 F5,但 RS bean 仍然等待第一个请求完成,然后再处理下一个请求。
[INFO] [2010-08-29 16:27:03,232] [akka:event-driven:dispatcher:global-15] c.n.StatusActor: got Slow request
[INFO] [2010-08-29 16:27:06,916] [akka:event-driven:dispatcher:global-10] c.n.StatusActor: got Slow request
[INFO] [2010-08-29 16:27:10,589] [akka:event-driven:dispatcher:global-3] c.n.StatusActor: got Slow request