【发布时间】:2021-10-27 15:15:50
【问题描述】:
我正在将现有应用程序从 Akka Classic 移植到 Akka Typed。最初,您可以使用 context.actorSelection().resolveOne() 获得对演员的引用
我知道在 Akka Typed 中不再支持此功能,我们应该使用 Receptionist 注册演员以供 ServiceKey 发现。
但是,我只想将消息发送到 local 演员,这是集群中每个节点上都存在的本地单例。我有它的本地路径,但没有直接引用它。这是因为它是由 Akka 管理系统创建的健康检查参与者。
从文档中可以看出,使用 Receptionist 为 ServiceKey 注册一个参与者可以使其对集群的所有成员可用。因此,如果我查询 ServiceKey,我将在所有节点上收到对单例参与者的引用。
似乎没有办法仅在本地注册Receptionist,并且在集群中发布这些内部引用似乎不必要地泄漏并违反封装。
从Receptionist 返回的Listing 中找出哪个 ref 是本地演员似乎也不容易。
我想用于注册的ServiceKey 可能是系统特定的?
我在这里错过了一个明显的解决方案吗?
【问题讨论】:
标签: akka akka-cluster akka-typed