获取对受监督的嵌套actor的引用

时间:2012-12-03 10:51:30

标签: scala akka actor

我有一个设置,其中一个actor(A)创建一个它监督的actor(B),并在它崩溃时重新启动。从演员系统外部我想从'嵌套'演员B中获得一些价值。

我可以使用:

直接向actorSystem询问嵌套actor

val nestedActorB = myActorSystem.actorFor("/user/A/B")

我可以保留对这个actor的引用,或者每次我想问嵌套actor有什么问题时,我应该向actorSystem询问ref。 (或者我应该向父演员询问参考)?

在这种情况下,最佳做法是什么? (scala 2.9.1和akka 2.0.4)

谢谢, 阿尔伯特

3 个答案:

答案 0 :(得分:2)

是的,您可以保留对演员的引用,而不是每次都使用actorFor询问系统。

本地和远程演员之间存在差异,您所指的文档段落含糊不清,我打开了ticket

本地演员只在actorFor调用期间被查找一次,因此它需要在查找之前存在,而发送到远程actor始终是路径并且远程actor在远程查找节点每次。

答案 1 :(得分:1)

即使重启后参考保持不变。 B永远是A的孩子,因此"/A/B"路径是稳定的。如果A是顶级演员,您总会在"/user/A"下找到他。所以是的,"/user/A/B"总是指向同一个演员。

答案 2 :(得分:1)

正如您所见in the akka doc,引用是一个对象,在运行时,每次发送消息时都会遍历actor树,或者检查您所指的actor的活泼性。

这意味着您可以在任何想要与该actor通信的情况下使用您通过actorFor方法获得的引用,即使属于该路径的actor已重新启动,或者即使它已经终止。