如何“询问”ActorSelection

时间:2013-04-19 13:16:07

标签: scala akka

如何“询问”应该由其路径提供的演员?

ask(context.actorSelection("../foo"), GetInfoMessage)

...会产生ActorSelection,但只能{问} ActorRef。 或者,context.actorFor会返回ActorRef,但根据documentation不推荐使用此功能。

2 个答案:

答案 0 :(得分:15)

自Akka 2.2.1起,您可以使用ActorSelection.resolveOne从选区中获取ActorRef

http://doc.akka.io/api/akka/2.2.1/index.html#akka.actor.ActorSelection

然后你可以像往常一样询问ActorRef

答案 1 :(得分:8)

稍后在该页面上您将看到

  

要获取绑定到特定actor的生命周期的ActorRef,您需要向actor发送消息(例如内置Identify消息)并使用actor的回复的发送者引用。

所以这是一个三步过程。使用actorSelection,然后发送Identify,然后发送ask

这仅适用于Akka 2.2,因此在Akka 2.1或之前您仍然需要使用actorFor

理由在2.2 Migration Guide中解释。