Akka远程actor部署文档错误

问题描述 投票:0回答:1

我创建了一个简单的场景。以下演员系统:

akka.tcp://[email protected]:2560
akka.tcp://[email protected]:2570
akka.tcp://[email protected]:2580

我们的想法是从127.0.0.1:2570创建一个“SampleActor”,但是使用文档中所述的配置将actor创建部署到127.0.0.1:2560:Creating Actors Remotely

akka {
  actor {
    deployment {
      /sampleActor {
        remote = "akka.tcp://[email protected]:2560"
      }
    }
  }
}

然后在127.0.0.1:2570:

system.actorOf(Props.create(SampleActor.class), "sampleActor");

现在从127.0.0.1:2580我想找到远程部署的actor并发送消息。根据文件:Looking up Remote Actors

ActorSelection selection =
                system.actorSelection("akka.tcp://[email protected]:2560/user/sampleActor");
        selection.tell("Pretty slick", ActorRef.noSender());

但是这不起作用。它在127.0.0.1:2560找不到演员。但如果我改为:

ActorSelection selection =
                    system.actorSelection("akka.tcp://[email protected]:2570/user/sampleActor");
            selection.tell("Pretty slick", ActorRef.noSender());

不同的是,在第一个我正在寻找它所部署的演员,在这种情况下在127.0.0.1:2560,正如文档所说,在第二种情况下,我正在寻找演员创作的演员定义,在这种情况下是127.0.0.1:2570。为什么会发生这种情况?,它没有意义,如果我正在寻找一个远程演员那么我应该看看它部署的地方吧?此外,当我在部署的actor上打印父级时,我得到:

akka://TestSystem/remote/akka.tcp/[email protected]:2570/user

这使得它更加令人困惑,因为它与文档中描述的不同:The Interplay with Remote Deployment所有这些使得它真的令人困惑,文档很长并且没有正确解释如何正确地做一些基本的事情。有人可以帮我理解这个问题吗?

java akka remote-access actor
1个回答
0
投票

显然这就是akka的工作方式,这很令人困惑。最后,您应始终向“部署者”发送消息,而不是向部署者发送消息。 “部署者”将依次将消息发送给“部署者”。与远程部署相关的所有内容的原则相同。

© www.soinside.com 2019 - 2024. All rights reserved.