actorSelection 和 resolveActorRef 之间的 Akka 区别
Akka difference between actorSelection and resolveActorRef
我使用两种不同的方式来获得相同的结果,但我需要指定一个回调时间,为什么?
他们服用相同的东西?
ActorRef resolveActorRef = getContext().getSystem()
.provider() .resolveActorRef(ActorPath.fromString("akka://RootRemoteActors/user/$a/remote.actors.AA"));
上面的代码无需等待任何时间即可检索演员 Ref
为什么如果我没有得到证明者,我必须指定一个持续时间?
ActorSelection actorSelection = getContext().getSystem()
.actorSelection( ActorPath.fromString("akka://RootRemoteActors/user/$a/remote.actors.AA"));
ActorRef ois = actorSelection.resolveOne( new Timeout(1000, TimeUnit.MILLISECONDS ))
.value().get().get();
最明显的区别可能是如果在 actor 路径中使用通配符,一个 ActorSelection
可以代表多个 ActorRef
。因此,如果您只是在 actorSelection
上调用 .tell
而不是 resolveOne
,您会将消息传递给所有匹配的参与者。
我从未使用过 resolveActorRef
但从我从来源 (ActorRefProvider and ActorSelection) 中看到的情况来看 ActorRefProvider
在 rootGuardian
上使用 getChild
发现Actor
你正在寻找,因此从你的演员树的顶部向下遍历,直到他最终(或没有)找到它。
ActorSelection
尝试使用询问模式(因此超时)向选择发送 Identify
消息,如果它收到响应,它将提供 ActorRef
从中它得到了回应。
resolveActorRef
似乎在您编写自己的序列化程序时使用:Akka Docs,所以如果您只想解析一个演员,我会选择 ActorSelection
(您顺便说一句。不必为了向它发送消息而解析)。
我使用两种不同的方式来获得相同的结果,但我需要指定一个回调时间,为什么? 他们服用相同的东西?
ActorRef resolveActorRef = getContext().getSystem()
.provider() .resolveActorRef(ActorPath.fromString("akka://RootRemoteActors/user/$a/remote.actors.AA"));
上面的代码无需等待任何时间即可检索演员 Ref 为什么如果我没有得到证明者,我必须指定一个持续时间?
ActorSelection actorSelection = getContext().getSystem()
.actorSelection( ActorPath.fromString("akka://RootRemoteActors/user/$a/remote.actors.AA"));
ActorRef ois = actorSelection.resolveOne( new Timeout(1000, TimeUnit.MILLISECONDS ))
.value().get().get();
最明显的区别可能是如果在 actor 路径中使用通配符,一个 ActorSelection
可以代表多个 ActorRef
。因此,如果您只是在 actorSelection
上调用 .tell
而不是 resolveOne
,您会将消息传递给所有匹配的参与者。
我从未使用过 resolveActorRef
但从我从来源 (ActorRefProvider and ActorSelection) 中看到的情况来看 ActorRefProvider
在 rootGuardian
上使用 getChild
发现Actor
你正在寻找,因此从你的演员树的顶部向下遍历,直到他最终(或没有)找到它。
ActorSelection
尝试使用询问模式(因此超时)向选择发送 Identify
消息,如果它收到响应,它将提供 ActorRef
从中它得到了回应。
resolveActorRef
似乎在您编写自己的序列化程序时使用:Akka Docs,所以如果您只想解析一个演员,我会选择 ActorSelection
(您顺便说一句。不必为了向它发送消息而解析)。