我尝试从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的消息。此消息由
在某种意义上被遍历的演员
查找失败(即,非通配符路径元素不对应于
现场演员),则产生负面结果。请注意
这并不意味着可以保证该答复的传递,它仍然
是正常消息。