首页 > 解决方案 > 如何从 ActorContext[T] 创建 ActorSelection

问题描述

自从我上一个 Akka 项目以来,Akka 已经转向更面向集群的方法。

我喜欢 akka.actor.typed 提供的模式。但我不是在构建集群系统。我研究了集群,但我认为我的系统过于碎片化,并且比能够构建合理集群的系统更加静态。

我有系统的骨架,但我无法形成联系,因为我无法创建 ActorSelections 来连接我的节点。我在 akka.actor.typed 中四处寻找,并没有看到创建 ActorSelection 的路径。

有没有办法从我在 akka.actor.typed 中可以访问的任何内容创建一个 ActorSelection?

是否有另一种方法可以在已知端口获取远程参与者系统的地址?

谢谢!

标签: akka

解决方案


我看到您想出了如何回退到经典 API,但是我建议您阅读类型化的接待员以发现演员,而不是回退到像这样的字符串查找,因为它们更脆弱并且提供了非常紧密的耦合。

接待员既可以在单个 ActorSystem 中工作,也可以在没有更改的集群中工作。对于接待员,想要提供服务的参与者使用键入的密钥注册自己。想要与之交互的参与者可以通过密钥订阅或查找可用的参与者(或使用组路由器来跟踪可用参与者的密钥并路由到他们)。

请参阅文档https://doc.akka.io/docs/akka/current/typed/actor-discovery.html#receptionisthttps://doc.akka.io/docs/akka/current/typed/routers.html#组路由器


推荐阅读