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