1

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

我可以使用以下方法直接向 actorSystem 询问嵌套的演员:

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

我可以保留对这个演员的引用,还是应该在每次我想向嵌套的演员询问某些事情时向 actorSystem 询问参考。(或者我应该向父演员询问裁判)?

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

谢谢,阿尔伯特

4

3 回答 3

2

是的,您可以保留对演员的引用,而不是每次都使用actorFor.

本地和远程演员之间存在差异,您所指的文档段落模棱两可,我已经打开了一张票

本地actor在调用过程中只被查找一次,actorFor所以在你查找它之前它需要存在,而发送到远程actor总是通过路径并且每次都在远程节点上查找远程actor。

于 2012-12-04T08:49:58.630 回答
1

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

于 2012-12-03T11:39:40.130 回答
1

正如您在 akka 文档中看到的那样,引用是一个对象,在运行时,每次您发送消息或检查您所引用的演员的活跃度时,它都会遍历演员树。

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

于 2012-12-03T13:32:12.697 回答