Akka actorSelection vs actorOf差异

spa*_*rkr 4 scala actor akka

这两者有区别吗?当我做:

context.actorSelection(actorNameString)
Run Code Online (Sandbox Code Playgroud)

我得到一个ActorSelection引用,我可以使用resolveOne解析它,然后我得到一个Future [ActorRef].但是对于actorOf,我立即获得了ActorRef.除此之外还有其他重要的区别吗?

在我希望将ActorRef包装在Future中的用例可能是什么?

Pio*_*cki 9

actorOf用于通过提供其Props对象来创建新actor.

actorSelectionactor树中路径"指针".通过使用resolveOne,您将在该路径下获得已存在的actor的actorRef - 但是actorRef需要时间来解析,因此Future.

以下是更详细的解释:http: //doc.akka.io/docs/akka/snapshot/general/addressing.html

actor参考指定一个actor,参考的生命周期与actor的生命周期相匹配; 一个actor路径代表一个名字,该名字可能是也可能不是由演员居住,而且路径本身没有生命周期,它永远不会变得无效.您可以在不创建actor的情况下创建actor路径,但是如果不创建相应的actor,则无法创建actor引用.

  • 调用context.actorSelection()不会创建任何actor - 正如文档所说:"不会尝试验证所提供路径的任何部分的存在".当您在actorSelection上调用resolveOne指向不存在的actor时,生成的Future将使用ActorNotFound excpetion完成:[在文档中查看更多](http://doc.akka.io/api/akka/2.3.11/?_ga = 1.195683951.2125247514.1432024129#akka.actor.ActorContext) (2认同)