Akka-Quartz-Scheduler未在Play for Scala中触发

时间:2017-04-12 00:39:14

标签: scala akka quartz-scheduler

我试图在Play for Scala中实现Akka-Quartz-Scheduler。问题是调度程序永远不会被触发。

这是我的quartz.conf,我试图每分钟触发一次事件:

akka {
  quartz {
    defaultTimezone = "UTC"
    schedules {
      cronFirst {
        description = "job that fires off every minute"
        expression = "0 0/1 * * * ?"
      }
    }
  }
}

我通过调用调用test方法的页面来启动调度程序 - 这似乎工作正常:

class Test @Inject() (system: ActorSystem) extends Controller {

    def test = Action { request =>

         val scheduler = QuartzSchedulerExtension(system)
         val receiver = system.actorOf(Props(new HelloActor))
         val d = scheduler.schedule("cronFirst", receiver, "Peter", None )

         Ok(d+"")
    }
}

这是永远不会被调用的actor(println永远不会被执行):

object HelloActor {
  def props = Props[HelloActor]

  case class SayHello(name: String)
}

class HelloActor extends Actor {
  import HelloActor._

  def receive = {
    case SayHello(name: String) =>
      println( "Hello, " + name)
  }
}

1 个答案:

答案 0 :(得分:2)

问题是消息不正确。这解决了这个问题:

val d = scheduler.schedule("cronFirst", receiver, HelloActor.SayHello("Peter"), None )