如何在Scala中的特定时间安排任务?

时间:2016-11-13 11:15:38

标签: java scala playframework

我想在每天的特定时间执行我的Scala函数cleaner.run()。我正在阅读有关Akka和Play框架的内容。然而,看起来Akka支持间隔,例如“每30分钟执行一次任务”,但它不支持在确切时间执行任务。 如果有人可以帮我把事情整理好(我使用我的特定例子),我将不胜感激,因为我对我阅读的所有信息和论坛帖子都有些遗漏。

所以,这是我的Scala对象,我希望每天23:55安排cleaner.run()

object MyTestManager {

  def main(args: Array[String]) {

    val cleaner = new Cleaner()

    cleaner.run()

  }
}

我有兴趣做这样的事情,但找不到将它传递给Scala 2.10的方法。

import play.jobs.*;

/** Fire at 12pm (noon) every day **/ 
@On("0 0 12 * * ?")
public class Bootstrap extends Job {

    public void doJob() {
        Logger.info("Maintenance job ...");
        ...
    }

}

此外,在打包Scala代码之后,启动应用程序的正确方法是什么,以便它每天23:55继续执行?一个简单的java -jar target/scala-2.10/my-assembly-1.0.jar会做这个工作,还是只执行一次代码?

1 个答案:

答案 0 :(得分:0)

您要找的是Akka-Quartz

那里有一个触发功能。使用该功能,您可以完成任务。

有关详细信息,请查看此处:

  1. How to fire akka scheduler daily for a particular time?
  2. https://blog.knoldus.com/2016/01/18/code-dissection-akka-quartz-scheduler-scalas-way-of-scheduling/