在play框架中对actor有疑问。免责声明 - 我仍然是演员/ AKKA的新手,现在已经花了很长时间阅读文档。如果以下任何一个问题的答案已经记录在我错过的某个地方,我深表歉意。
我想验证的是我正在为以下场景实施正确/惯用的解决方案:
案例: 使用play框架,我需要执行可能阻塞(sql查询)的代码,使其不会妨碍我的其他Web服务器。
以下是我目前的解决方案和一些问题:
static ActorRef actorTest = Akka.system().actorOf(
Props.create(ActorTest.class));
public static Promise<Result> runQuery() {
Promise<Result>r = Promise.wrap(
Patterns.ask(actorTest, query, 600000)).map(
new Function<Object, Result>() {
public Result apply(Object response) {
return ok(response.toString());
}
});
return r;
}
对此有任何澄清将不胜感激。
答案 0 :(得分:1)
我主要使用Scala与Akka和Play,所以我可能会误导你,但让我们试一试。
首先,你可以放弃演员来完成你想要的任务。我只是在未来运行计算。
当您需要某个州时,用户角色。通过异步均值运行查询可以很好地使用Future。
Futures和Actora在ExecutionContext上运行,默认转世在Scala中可用,通过引用导入和使用。这在Java中可能有所不同,但可能并不多。就像你说的那样,在application.conf中配置了默认的ExecutionContext。