【问题标题】:Lifecyle of an actor in actor model演员模型中演员的生命周期
【发布时间】:2012-10-15 02:39:20
【问题描述】:

我是演员模型的新手。谁能解释演员模型中演员的生命周期?我一直在文档中寻找答案,但找不到任何令人满意的结果。

我对演员在完成 onReceive() 方法后所做的事情感兴趣 - 它是还活着还是已经死了?我们可以控制它的生命周期来说“不要死,在那里等待下一条消息”吗?例如,使用循环路由器,如果我将其设置为有 5 个演员 - 它是否总是将工作分配给 相同 5 个演员?或者,只要有消息,actor 就会被销毁和创建,但最大限制始终为 5。

谢谢!

【问题讨论】:

    标签: scala akka actor


    【解决方案1】:

    Actor 总是存在的,除非你明确地“杀死”它(或者它以某种方式崩溃)。当它收到一条消息时,它将“使用”一个线程,处理该消息,然后回到“空闲”状态。当它收到另一条消息时,它再次变为“活动”。

    对于具有 5 个Actors 的循环路由器,它是相同的 5 个Actors - 每次向路由器发送消息时,路由器不会创建新的。

    Actor 模型遵循“隔离可变性”(并发)模型 - 它仅将状态封装到自身 - 其他 Actors 无法直接接触此状态,它们只能通过消息传递与其交互。 Actors 必须“活着”才能保持状态。

    【讨论】: