我有一个在端口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的要点之一吗?
答案 0 :(得分:0)
您说您正在从其他系统访问远程actor。但我发现你使用127.0.0.1来解决远程系统问题。 127.0.0.1是一个特殊的环回地址,指的是本地机器。因此,您需要提供可寻址的IP来访问远程计算机。
有关环回的更多信息,请检查此http://en.wikipedia.org/wiki/Loopback
中也明确说明了这一点“注
如果部署到多台计算机上,请务必将默认IP 127.0.0.1替换为系统可访问的实际地址! “