我需要启动 Akka (2.0) actor 系统,发送一些消息,然后等待它完成繁重的工作。之后,我需要做一些与那些 Actor 无关的事情。
我尝试使用以下代码等待所有 Actor 停止:
val system = new ActorSystem("parallelRunners")
val master = system.actorOf(Props[Master])
master ! Start
system.awaitTermination // <-- hangs here
所有 Actor 都通过 self 自杀!毒丸
。我做错了什么?
最佳答案
在 Akka 2.4.1 for scala 2.11 中,它似乎又有所不同。
system.awaitTermination()
已弃用,文档指示我们改用 Await.result(system.whenTermminate, timeout)
。
如203也就是说,system.terminate
仍然是终止系统的方式。
这是我使用的一些示例代码:
val actorSystem = ActorSystem("ActorSystem")
val myActors = actorSystem.actorOf(Props[MyActor].withRouter(RoundRobinPool(10)), "MyActors")
rainbows.foreach(rainbow => myActors ! rainbow)
Await.ready(actorSystem.whenTerminated, Duration(1, TimeUnit.MINUTES))
然后在 MyActor 类中我有行 context.system.terminate()
关于scala - 如何等待Akka Actor系统终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12436397/