Play for Scala 中未触发 Akka-Quartz-Scheduler
Akka-Quartz-Scheduler not triggered in Play for Scala
我正在尝试在 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)
}
}
问题是消息不正确。这解决了问题:
val d = scheduler.schedule("cronFirst", receiver, HelloActor.SayHello("Peter"), None )
我正在尝试在 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)
}
}
问题是消息不正确。这解决了问题:
val d = scheduler.schedule("cronFirst", receiver, HelloActor.SayHello("Peter"), None )