阿卡新手的问题 - 我读了阿卡要点,可能有人请解释阿卡停止/毒丸对杀的区别? 本书提供只是一个小的解释“杀是同步与毒丸是异步的。” 但是,在什么样的方式? 在此期间是否调用演员螺纹锁? 杀过程中通知的儿童演员,后停止envoked等? 一个概念的示例使用与其他?
非常感谢!
阿卡新手的问题 - 我读了阿卡要点,可能有人请解释阿卡停止/毒丸对杀的区别? 本书提供只是一个小的解释“杀是同步与毒丸是异步的。” 但是,在什么样的方式? 在此期间是否调用演员螺纹锁? 杀过程中通知的儿童演员,后停止envoked等? 一个概念的示例使用与其他?
非常感谢!
双方stop
和PoisonPill
将终止演员和停止消息队列。 它们将引起演员停止处理邮件,发送停止呼吁其所有的孩子,等他们结束,然后调用其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
使用PoisonPill只要你能。 它被放在邮箱和消耗像任何其他消息。 您还可以使用“context.stop(个体经营)”,从一个演员之内。
它与之前PoisonPill被接收到邮箱,所有的消息来进行后PoisonPill异步停止演员。