Akka的新手问题 - 我正在阅读Akka Essentials,有人可以解释一下Akka Stop/Poison Pill与Kill之间的区别吗?这本书只提供了一个小小的解释"杀死同步与毒药是异步的".但是以什么方式?调用actor是否在此期间锁定线程?儿童演员是否在杀人,后停止等情况下被通知?一个概念与另一个概念的使用示例?
非常感谢!
rs_*_*atl 326
双方stop并PoisonPill会终止演员和停止消息队列.它们将导致actor停止处理消息,向其所有子节点发送停止调用,等待它们终止,然后调用它的postStop钩子.所有其他消息都将发送到死信邮箱.
不同之处在于在此序列开始之前处理消息.在stop呼叫的情况下,首先完成当前正在处理的消息,并丢弃所有其他消息.发送时PoisonPill,这只是队列中的另一条消息,因此序列将在PoisonPill收到时开始.将首先处理队列中前面的所有消息.
相反,该Kill消息导致actor抛出一个ActorKilledException使用普通管理器机制处理的事件.因此,此处的行为取决于您在主管策略中定义的内容.默认是停止actor.但是邮箱仍然存在,因此当actor重新启动时,它仍然会有旧消息,除了导致失败的消息.
另请参阅文档中的"停止演员","杀死演员"部分:
http://doc.akka.io/docs/akka/snapshot/scala/actors.html
更多关于监管策略:
http://doc.akka.io/docs/akka/snapshot/scala/fault-tolerance.html
| 归档时间: |
|
| 查看次数: |
51995 次 |
| 最近记录: |