16.5.1 Acctor 的寻址
理解 ActorPath
如果我们有一个 ActorRef 的话, 可以调用 actorRef.path()得到 Actor的 URL:
akka://ActorSystem/user/actor
Actor 的路径包含两部分
- 源:
akka://ActorSystem - 路径:
/user/actor
源可以在本地(akka://ActorSystem). 也可以在远程(akka.tcp://Actor [email protected])
无论是本地还是远程 Actor, 路径的格式相同(例如/user/actor)。
ActorRef 除了包含 ActorPath 外还有 Actor 的 UID, 比如#123456.
ActorPath 仅仅包 含了 Actor 的路径。
获取远程 Actor 的 ActorRef
通过ActorSystem.actorSelection我们可以查询位于任意路径的 Actor,然后向其发送消息。
val actorSelection = actorSystem.actorSelection("akka.tcp://[email protected]:10000/user/my-actor")
上面的语句会返回 ActorSelection, 我们可以向 ActorSelection 发送消息.
不过 ActorSelection 并不要求对应的 Actor 一定存在。
如果我们向 ActorSelection 发送消息而其对应的 Actor 不存在,消息就会丢失。