Java Play2- Akka的工作
我正在尝试使用akka在java play2中创建一个作业。
我总是得到相同的错误error: cannot find symbol
它指向system.actorOf()
Intellij和Eclipse不会给我一个错误信息。
但我找不到这种方法。 我使用了以下导入
import play.libs.Akka; import akka.actor.ActorSystem; import akka.actor.ActorRef; import akka.actor.UntypedActorFactory; import akka.actor.UntypedActor; import akka.actor.Props; import akka.actor.ActorRefFactory;
也许文档过时了,他们已经删除了system.actorOf()
?
public class Global extends GlobalSettings { ActorRef tickActor = system.actorOf(new Props().withCreator(new UntypedActorFactory() { public UntypedActor create() { return new UntypedActor() { public void onReceive(Object message) { if (message.equals("Log")) { controllers.Application.log(); } else { unhandled(message); } } }; } })); @Override public void onStart(Application app) { Cancellable cancellable = system.scheduler().schedule(Duration.Zero(), Duration.create(10, TimeUnit.SECONDS), tickActor, "Log"); } }
编辑:
。
哦…谷歌将我重定向到过时的文档。 现在是Akka.System()
..
- 谁能给我一个关于如何用up2date代码创建tickActor的例子?
http://www.playframework.org/documentation/2.0.2/JavaAkka
我强烈建议您查看有关演员和调度程序的Akka文档。
您还可以看看这个问题: Play Framework 2.0在服务器启动时安排Akka Actor
解决了它。
顺便说一下文档中有一些拼写错误。
import java.util.concurrent.TimeUnit; import play.*; import play.mvc.*; import play.mvc.Http.RequestHeader; import static play.mvc.Results.*; import play.libs.Akka; import akka.actor.ActorSystem; import akka.actor.ActorRef; import akka.actor.UntypedActorFactory; import akka.actor.UntypedActor; import akka.actor.Props; import akka.actor.ActorRefFactory; import akka.util.*; public class Global extends GlobalSettings { ActorRef tickActor; @Override public void onStart(Application app) { Logger.info("D"); tickActor = Akka.system().actorOf((new Props().withCreator(new UntypedActorFactory() { public UntypedActor create() { return new UntypedActor() { public void onReceive(Object message) { if (message.equals("Log")) { //Do something // controllers.Application.log(); } else { unhandled(message); } } }; } }))); Akka.system().scheduler().schedule( Duration.create(0, TimeUnit.MILLISECONDS), Duration.create(30, TimeUnit.MINUTES), tickActor, "Log" ); } }