Akka PoisonPill是否传播给儿童

时间:2016-02-17 17:43:59

标签: scala akka actor kill

如果我有一个有{Child} A的演员C并向PoisonPill发送C,我会APoisonPill转发给{ {1}}还是会C

我有一个设置,context.stop(C)很有可能创建由A处理的工作。所以我希望C在处理A之前到达的所有消息(同时发送到PoisonPill的消息)并且C处理所有这些消息之后终止。它终止了。

1 个答案:

答案 0 :(得分:3)

我认为Akka不会转发PoisonPill。当演员收到PoisonPill时,它会调用self.stop()。您可以在Akka源代码中看到此处:

https://github.com/akka/akka/blob/f008a932c381013f6060ee00a731862bafed2be7/akka-actor/src/main/scala/akka/actor/ActorCell.scala#L514

在Actor中调用stop时,递归调用其所有子节点中的stopstop将允许处理当前邮件,但会丢弃邮箱中的其余邮件。