AkkaAkka中的actor生命周期涉及死亡监控系统
发布时间
阅读量:
阅读量
Actor生命周期管理
在Actor系统中,路径所表示的是一种“位置”,该位置可能被某个正在运行的actor所占据。初始状态下,除了系统初始化时的角色之外,所有路径都是空置的。当调用actorOf()方法时,会根据由Props定义的参数,在指定路径上创建一个角色的实例。一个actor实例由路径与一个唯一标识符(UID)共同决定。当进行重启操作时,虽然会替换掉原有的Props定义所生成的actor实例,但其对应的化身以及UID仍然保持不变。
一旦该actor被终止,其对应的化身生命周期也随之结束。此时与生命周期相关的事件将被触发,并通知相关监管角色执行终止流程。在化身停止之后,原先被占用的路径可以再次通过actorOf()方法创建新的角色实例加以使用。在这种情况下,新生成的化身名称将与之前的一致,但其UID则会有所不同。
一个ActorRef始终代表的是某个特定的化身(即路径与UID组合),而不仅仅是一个路径本身。因此,如果某个角色被停止后重新创建了一个同名的角色实例,则旧有的ActorRef不会指向新生成的角色。
另一方面,ActorSelection仅指向特定路径(或多个路径,在使用通配符的情况下),并不知晓当前该路径是否已被某个化身占用。正因如此,ActorSelection无法被监控到。为了解决这一问题,并获取当前存在于该路径下
全部评论 (0)
还没有任何评论哟~
