Akka的PoisonPill是传播给演员的孩子,还是只是在不处理其余消息的情况下就停止了孩子? Akka文档尚不清楚,并且在StackOverflow中有一个类似问题的答案,其中引用了旧代码,该代码表明子级已停止,但对我而言却没有意义:为什么演员能够在处理之前轻松地处理消息毒丸,但它的孩子不是。
答案 0 :(得分:1)
PoisonPill
不会传播到子级。换句话说,孩子们被阻止了,而不是“中毒了”。父级处理PoisonPill
后,它将停止,然后停止其子级。来自documentation:
...停止父级Actor还将递归停止该父级创建的所有子级Actor。
幼稚的方法是先向孩子发送PoisonPill
,再向父母发送PoisonPill
。但是,actor停止是异步发生的,因此无法保证孩子在由于父级的停止而停止之前,已经处理了各自邮箱中的邮件(直到PoisonPill
)。>
要更好地控制演员的孩子如何“死亡”,请查看文档中提到的pattern。