如何在akka中查找来自不同系统的远程actor的引用?

时间:2013-10-25 21:00:10

标签: java akka remoting

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

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

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

当我使用调试器查看对象时,actor会像这样显示

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

我使用

创建经理系统
 ActorSystem system = ActorSystem.create("managerSystem");

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

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

它在对象中给我这个

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

当我尝试发送消息时,它会在控制台中给出一个deadletter错误日志 我不确定我做错了什么,但看起来我试图用来查找远程演员的系统搞乱了我的actorSelection调用。我是否需要在同一系统内才能引用远程演员?我认为这是使用akka的要点之一吗?

1 个答案:

答案 0 :(得分:0)

您说您正在从其他系统访问远程actor。但我发现你使用127.0.0.1来解决远程系统问题。 127.0.0.1是一个特殊的环回地址,指的是本地机器。因此,您需要提供可寻址的IP来访问远程计算机。

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

documentation

中也明确说明了这一点

“注

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