【发布时间】:2019-07-07 18:03:05
【问题描述】:
我创建了一个简单的场景。 以下演员系统:
akka.tcp://TestSystem@127.0.0.1:2560
akka.tcp://TestSystem@127.0.0.1:2570
akka.tcp://TestSystem@127.0.0.1:2580
想法是从 127.0.0.1:2570 创建一个“SampleActor”,但使用文档中所述的配置将 Actor 创建部署到 127.0.0.1:2560:Creating Actors Remotely
akka {
actor {
deployment {
/sampleActor {
remote = "akka.tcp://TestSystem@127.0.0.1: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://TestSystem@127.0.0.1:2560/user/sampleActor");
selection.tell("Pretty slick", ActorRef.noSender());
但是这不起作用。它在 127.0.0.1:2560 上找不到演员。但如果我改为:
ActorSelection selection =
system.actorSelection("akka.tcp://TestSystem@127.0.0.1:2570/user/sampleActor");
selection.tell("Pretty slick", ActorRef.noSender());
不同之处在于,在第一个案例中,我正在寻找部署它的演员,在本例中为 127.0.0.1:2560,正如文档所说,而在第二个案例中,我正在寻找部署它的演员定义了 actor 创建,在本例中为 127.0.0.1:2570。为什么会发生这种情况?,这没有意义,如果我正在寻找远程演员,那么我应该看看它部署的地方对吗? 此外,在部署的actor上打印父级时,我得到:
akka://TestSystem/remote/akka.tcp/TestSystem@127.0.0.1:2570/user
这使得它更加混乱,因为它与文档中描述的不同:The Interplay with Remote Deployment 所有这些都让人非常困惑,文档真的很长,并且没有正确解释如何正确地做一些基本的事情。有人可以帮我理解这个问题吗?
【问题讨论】:
-
@gaston 我确实做到了,我的意思是它可以按照我的解释工作,但在将端口设置为已部署端口时却不行。
标签: java akka remote-access actor