Akka每日安排的任务

时间:2015-08-06 10:25:38

标签: akka

我准备用Play2重写我的Play1应用程序,我需要实现在某个特定时间每天运行一次的计划任务。 在我的旧应用程序中,我实现如下:

  • 使用Play1作业安排任务,应用程序在多个节点上运行

  • 在指定的时间,所有健康节点都启动任务,我在数据库中使用锁定记录,以确保其中只有一个继续执行,而其他所有节点都在不执行任何操作的情况下退出。

如何使用Akka实现类似的功能?

1 个答案:

答案 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