我正在使用Akka群集运行Play。 我需要一个“Singleton Scheduler”来每小时执行一些任务。
到目前为止我发现的是,我应该使用ClusterSinglegonManager。 但我不确定我的演员必须如何。 在我看来,我不需要“接收”方法。
那就是我如何实现我的单身人士:
system.actorOf(
ClusterSingletonManager.props(
singletonProps = MySingletonActor.props(configuration),
terminationMessage = PoisonPill,
settings = ClusterSingletonManagerSettings(system)),
name = "mysingletonactor")
这适合:
object MySingletonActor {
def props(configuration: Configuration): Props = Props(new MySingletonActor(configuration))
}
class MySingletonActor(configuration: Configuration) extends Actor with ActorLogging {
context.system.scheduler.schedule(2 seconds, 2 seconds)(println("Hallo Welt"))
def receive = ???
}
但当然它会引发异常,因为接收方法缺少实现。但它确实有效。
去哪里最好的方法是什么? 只安排一个“Tick”并在接收方法中处理Tick ...感觉很尴尬......
class MySingletonActor(configuration: Configuration) extends Actor with ActorLogging {
case object Tick
context.system.scheduler.schedule(2 seconds, 2 seconds, self, Tick)
def receive = { case Tick => println("Hallo Welt") }
}
Akka中是否有任何类型的Singleton Scheduler?