如何"询问"ActorSelection

hid*_*bit 14 scala akka

我如何"问"应该由其路径提供的演员?

ask(context.actorSelection("../foo"), GetInfoMessage)
Run Code Online (Sandbox Code Playgroud)

...结果ActorSelection只有ActorRefs可以"问".或者,context.actorFor返回an ActorRef,但根据文档不推荐使用此函数.

And*_*ejs 15

从Akka 2.2.1开始,您可以使用ActorSelection.resolveOneActorRef从选择中获取:

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

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


sou*_*ica 8

稍后您将看到该页面

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

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

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

2.2迁移指南中解释了该基本原理.