我如何“询问”应该由其路径提供的演员?
ask(context.actorSelection("../foo"), GetInfoMessage)
......导致 anActorSelection
但只有ActorRef
s 可以“询问”。或者,context.actorFor
返回一个ActorRef
,但根据文档不推荐使用此函数。
从 Akka 2.2.1 开始,您可以使用从选择ActorSelection.resolveOne
中获取ActorRef
:
http://doc.akka.io/api/akka/2.2.1/index.html#akka.actor.ActorSelection
然后你可以像往常一样询问 ActorRef
稍后在该页面上,您将看到
要获取绑定到特定参与者生命周期的 ActorRef,您需要向参与者发送消息,例如内置的识别消息,并使用参与者回复的发送者引用。
所以这是一个三步过程。使用actorSelection
,然后发送Identify
,然后ask
。
不过,这仅适用于 Akka 2.2,因此在 Akka 2.1 或更早版本中,您仍然需要使用actorFor
.
基本原理在2.2 迁移指南中进行了解释。