4

我有一个 ActorSystem 在端口 2552 上运行,另一个在端口 2553 上运行。它们每个都创建一个 Actor 实例化一个单例对象。我现在想创建另一个系统来管理这两个系统并且可以引用这些参与者以便同时使用单例。

我知道演员正在监听端口,因为它为每个端口提供了这样的日志

 Remoting started; listening on addresses :[akka.tcp://singletonApplication@127.0.0.1:2552]

当我使用调试器查看对象时,演员会像这样出现

 Actor[akka://singletonApplication/user/singleton]

我使用创建经理系统

 ActorSystem system = ActorSystem.create("managerSystem");

但是当我尝试通过以下行引用远程演员时

 system.actorSelection("akka.tcp://singletonApplication@127.0.0.1:2552/user/singleton");

它在对象中给了我这个

 ActorSelection[Actor[akka://managerApplication/deadLetters]/user/singleton]

当我尝试向它发送一条消息时,它会在控制台中给我一个死信错误日志称呼。我是否需要在同一个系统中才能引用远程参与者?我认为这是使用 akka 的要点之一?

4

1 回答 1

0

您是说您正在从不同的系统访问远程参与者。但我看到您正在使用 127.0.0.1 来寻址远程系统。127.0.0.1 是一个特殊的环回地址,指的是本地机器。因此,您需要提供可寻址的 IP 才能访问远程机器。

有关 Loopback 的更多信息,请查看此http://en.wikipedia.org/wiki/Loopback

这也在文档中明确说明:

“笔记

如果部署到多台机器上,请务必将默认 IP 127.0.0.1 替换为系统可访问的真实地址!"

于 2013-10-25T22:04:21.703 回答