【发布时间】:2016-06-07 08:06:16
【问题描述】:
我正在使用 Akka 集群运行 Play。 我需要一个“单例调度程序”来每小时执行一些任务。
到目前为止,我发现我应该使用 ClusterSinglegonManager。 但我不确定我的演员应该是什么样子。 在我看来,我不需要“接收”方法。
也就是说,我如何实例化我的 Singleton:
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 中是否有任何类型的单例调度程序?
【问题讨论】:
标签: scala playframework akka akka-cluster