使用演员系统创建一个将设置时间表的类。
public class SchedulingTask {
@Inject
public SchedulingTask(final ActorSystem system,
@Named("foo-actor") ActorRef fooActor) {
system.scheduler().schedule(
Duration.create(0, TimeUnit.MILLISECONDS), //Initial delay
Duration.create(12, TimeUnit.HOURS), //Frequency
fooActor,
"doSomething",
system.dispatcher(),
null);
}
}
system
被注入,你也可以注入对actor的引用。或者,您可以从system
.
一旦你调整了它来做你想做的事,SchedulingTask
在一个模块中声明。请注意,它是一个急切的单例 - 这确保它在启动时运行。
package com.example;
import com.google.inject.AbstractModule;
import play.libs.akka.AkkaGuiceSupport;
public class MyModule extends AbstractModule implements AkkaGuiceSupport {
@Override
protected void configure() {
bindActor(FooActor.class, "foo-actor");
bind(SchedulingTask.class).asEagerSingleton();
}
}
最后,更新您的应用程序配置以启用该模块。
play.modules.enabled += "com.example.MyModule"