我尝试从ActorSelection获取倍数ActorRef。有人知道是否可能?

我的密码

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

最佳答案

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


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

要为ActorSelection获取ActorRef,您需要发送一个
给选择的消息,并使用回复的sender()参考
来自演员。有一个内置的“标识”消息,所有Actor
会理解并用ActorIdentity自动回复
包含ActorRef的消息。此消息由
在某种意义上被遍历的演员
查找失败(即,非通配符路径元素不对应于
现场演员),则产生负面结果。请注意
这并不意味着可以保证该答复的传递,它仍然
是正常消息。

10-06 11:25