在Play中开始Akka演员

时间:2012-12-06 08:59:53

标签: scala playframework-2.0 akka

我玩了!我需要定期运行某些任务的应用程序。我可以使用Akka安排任务,但我不知道如何启动调度程序本身。我现在正在做的是拥有一个Scheduler对象并从Global.scala开始,就像这样

// app/jobs/Scheduler.scala
package jobs

import akka.util.duration._
import play.api.libs.concurrent.Akka
import play.api.Play.current

object Scheduler {
  def start() {
    Akka.system.scheduler.schedule(0 seconds, 1 minutes) {
      SomeTask.start()
    }
  }
}

然后

// app/Global.scala
import play.api._
import jobs.Scheduler

object Global extends GlobalSettings {
  override def onStart(app: Application) {
    Scheduler.start()
  }
}

问题在于,即使在开发模式和测试期间,任务也会运行,这很快就会非常烦人。

  

有没有办法只在生产模式下使用Akka安排作业?

1 个答案:

答案 0 :(得分:7)

Play对象上的方法isProdisDevisTest可能会有所帮助。即使您在范围内没有隐式Application,也可以显式传递

override def onStart(app: Application) {
  if (isProd(app)) Scheduler.start()
}