阿卡杀与停止对毒丸?(Akka Kill vs. Stop vs. Poison Pill?)

2019-07-05 02:27发布

阿卡新手的问题 - 我读了阿卡要点,可能有人请解释阿卡停止/毒丸对杀的区别? 本书提供只是一个小的解释“杀是同步与毒丸是异步的。” 但是,在什么样的方式? 在此期间是否调用演员螺纹锁? 杀过程中通知的儿童演员,后停止envoked等? 一个概念的示例使用与其他?

非常感谢!

Answer 1:

双方stopPoisonPill将终止演员和停止消息队列。 它们将引起演员停止处理邮件,发送停止呼吁其所有的孩子,等他们结束,然后调用其postStop挂钩。 所有其它消息发送到一纸空文邮箱。

所不同的是在这个序列开始之前的消息得到处理。 在的情况下stop呼叫,当前正在处理的消息首先被完成,与所有其他丢弃。 当发送PoisonPill ,这简直是队列中的另一条消息,所以当序列将开始PoisonPill被接收。 这是在它前面的队列中的所有邮件将被优先处理。

相比之下, Kill消息使演员抛出ActorKilledException其被使用正常的主管机构来处理。 所以这里的行为取决于你在你的上司策略定义了什么。 默认是停止的演员。 但邮箱仍然存在,所以演员重新启动时,它仍然会具有不同的是导致失败的一个旧的消息。

另见“停止的演员”,“杀一个演员”一节中的文档:

http://doc.akka.io/docs/akka/snapshot/scala/actors.html

而更多的监督策略:

http://doc.akka.io/docs/akka/snapshot/scala/fault-tolerance.html



Answer 2:

使用PoisonPill只要你能。 它被放在邮箱和消耗像任何其他消息。 您还可以使用“context.stop(个体经营)”,从一个演员之内。



Answer 3:

它与之前PoisonPill被接收到邮箱,所有的消息来进行后PoisonPill异步停止演员。



文章来源: Akka Kill vs. Stop vs. Poison Pill?
标签: scala akka