我准备用Play2重写我的Play1应用程序,我需要实现在某个特定时间每天运行一次的计划任务。 在我的旧应用程序中,我实现如下:
使用Play1作业安排任务,应用程序在多个节点上运行
在指定的时间,所有健康节点都启动任务,我在数据库中使用锁定记录,以确保其中只有一个继续执行,而其他所有节点都在不执行任何操作的情况下退出。
如何使用Akka实现类似的功能?
答案 0 :(得分:1)
您可以使用Scheduler执行runnable或向演员发送消息:
system.scheduler().scheduleOnce(Duration.create(24, TimeUnit.HOURS),
taskActor, "doTask", system.dispatcher(), null);
或者
system.scheduler().scheduleOnce(Duration.create(24, TimeUnit.HOURS),
new Runnable() {
@Override
public void run() {
doTask()
}
}, system.dispatcher());
我更喜欢包含演员的方法。
您可以阅读如何创建演员以接收doTask消息here。