所以我似乎有两种可能来获得一个子actor实例:
context.actorSelection
,返回Future[ActorRef]
context.actorSelection(actorNameString).resolveOne(2.seconds)
context.child
,返回Option[ActorRef]
context.child(actorNameString)
那么我应该选择哪一个?为什么?
我知道使用actorSelection
是什么,我可以是异步的,但是有什么其他理由支持一个而不是另一个?
答案 0 :(得分:1)
除非你为你的儿童演员使用远程部署(在这种情况下我不知道该回答什么),或者你想要引用一个孩子的孩子,我认为你不应该使用得到一个ActorRef
通过context.actorSelection
获取对儿童演员的引用。
context.actorSelection
用于识别和获取在任何地方(在其他JVM /主机上)运行的(多个)actor的引用,这就是它异步的原因。当然你可以用它来抓住一个儿童演员,但如果你可以去context.child
。
我认为您可以将context.child
视为专用版本(context.actorSelection(actorNameString).resolve
),以用于您希望获得对儿童演员的单一引用的情况。