2015-11-13 45 views
0

我正在使用毒丸殺死演員(A)的兒童(Bx)演員。每個孩子都有另一個孩子(Cx)和更遠的孩子。所以它想A -> B1 -> C1,C2,C3 -> Dx。如果我只是將PoisonPill發送給演員B,那麼它會殺死下面的後代演員嗎?Akka PoisonPill會殺死它的子女的後代嗎?

Thanksa

回答

3

是的,一旦演員收到PoisonPill消息後,停止服用了消息,並且將停止兒童演員。

從演員生命週期中可以清楚地看出,父代演員在父代演員停止前會在preRestart期間殺死任何兒童演員並等待終止。在你的情況下,不想讓孩子停下,然後override preRestart直接撥打postStop

+0

發送停止給兒童演員(A-> B),它是否會發送從B到其後代的停止信號也進一步(B-> C,C-> D)? – ans4175

+0

它會的。除非您重寫'preRestart'來更改默認行爲,否則所有actor在停止之前都會終止其子actor。所以在你的情況下,如果你發送'PoisonPill'給演員'A','B,C和D'會在演員A停止前被殺死,即使'C'是'B'的子演員,'D'是'C'的小孩演員。 – 757071

+0

好吧,謝謝你的簡潔解釋:) – ans4175