Dru*_*ken 6 java scheduling playframework-2.5
我们有一个使用PlayFramework 2.5.4和MongoDB的Play-Project.我们希望每天更新我们的数据库.目前,每当我们收到请求时,我们会检查时间,如果一天结束,我们会更新.这导致了一些问题:
所以我发现了AKKA和旧的stackoverflowquestions的文档(比如如何在Play 2.0.4中安排每日任务+ onStart()?).但解决方案不再适用.
Akka.system().scheduler()
Run Code Online (Sandbox Code Playgroud)
已弃用
system.scheduler()
Run Code Online (Sandbox Code Playgroud)
给出compilingerrors(来自文档),我不知道导入是否丢失或者还有什么.据我所知你应该使用版本2.4以后的@inject,但是我找不到关于如何使用它与时间表或如何使用它的适当例子
其实我想做的就是每天都在同一时间调用PlayerDBHandler.newDay().
感谢帮助
Ste*_*ner 17
没有看到编译错误,我猜测system没有定义.扩展文档中的示例,这样的事情应该有效.
public class SchedulingTask {
@Inject
public SchedulingTask(final ActorSystem system,
@Named("update-db-actor") ActorRef updateDbActor) {
system.scheduler().schedule(
Duration.create(0, TimeUnit.MILLISECONDS), //Initial delay
Duration.create(1, TimeUnit.DAYS), //Frequency
updateDbActor,
"update",
system.dispatcher(),
null);
}
}
Run Code Online (Sandbox Code Playgroud)
system注入,你也可以注入一个actor的引用.或者,您可以从中查找actor ref 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(UpdateDbActor.class, "update-db-actor");
bind(SchedulingTask.class).asEagerSingleton();
}
}
Run Code Online (Sandbox Code Playgroud)
最后,更新您的应用程序配置以启用该模块.
play.modules.enabled += "com.example.MyModule"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3491 次 |
| 最近记录: |