可以从ActorSelection中检索倍数actorRef吗?

时间:2015-09-13 22:21:54

标签: java akka actor

我尝试从ActorSelection获取多个ActorRef。有人知道是否可能吗?

我的代码

ActorRef actorRef = Await.result(getContext().actorSelection("/user/regions/*").resolveOne(timeout), timeout.duration());

1 个答案:

答案 0 :(得分:1)

使用resolveOne是不可能的,因为顾名思义它会返回一个引用。您可以向ActorSelection发送消息,该消息会将消息发送给与选择匹配的每个Actor,并让这些演员回复。如果您使用内置的Identify消息,则根本不需要更改接收角色。来自http://doc.akka.io/docs/akka/snapshot/scala/actors.html#Identifying_Actors_via_Actor_Selection的文档:

  

可以通过ActorSelection和路径发送消息   在传递每条消息时会查找ActorSelection。如果   选择与任何演员都不匹配,邮件将被删除。

     

要获取ActorSelection的ActorRef,您需要发送一个   消息到选择并使用reply()引用的回复   来自演员。所有Actors都有一条内置的Identify消息   将理解并自动回复一个ActorIdentity   包含ActorRef的消息。此消息由特别处理   如果一个具体的名字,在某种意义上遍历的演员   查找失败(即非通配符路径元素不对应   现场演员)然后生成否定结果。请注意   这并不意味着该答复的传递得到保证,它仍然存在   是一个正常的信息。