我试图在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)
}
}
答案 0 :(得分:2)
问题是消息不正确。这解决了这个问题:
val d = scheduler.schedule("cronFirst", receiver, HelloActor.SayHello("Peter"), None )