Java 如何从akka的不同系统中查找对远程参与者的引用?

Java 如何从akka的不同系统中查找对远程参与者的引用?,java,akka,remoting,Java,Akka,Remoting,我有一个ActorSystem在端口2552上运行,另一个在端口2553上运行。它们中的每一个都创建了一个Actor,该Actor实例化了一个singleton对象。现在我想创建另一个系统来管理这两个系统,并可以引用这些参与者,以便同时使用单例 我知道参与者正在监听端口,因为它会为每个端口提供这样的日志 Remoting started; listening on addresses :[akka.tcp://singletonApplication@127.0.0.1:2552] 当我使用

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

我知道参与者正在监听端口,因为它会为每个端口提供这样的日志

 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]
当我尝试向它发送消息时,它会在控制台中给我一个死信错误日志
我真的不确定我做错了什么,但我试图用来查找远程演员的系统似乎把我的actorSelection调用搞乱了。我是否需要在同一个系统中才能引用远程参与者?我认为这是使用akka的要点之一?

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

有关环回的更多信息,请查看此

以下文件中也明确说明了这一点:

“注意

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

是的,但我正在本地测试它,所以现在我正在通过不同的应用程序和不同的端口在同一台机器上运行actors。但我看到您的端口也是相同的(2552)根据您的帖子,您应该检查akka的配置,并确保在试图查找远程参与者的系统中使用RemoteActorRefProvider而不是默认的LocalActorRefProvider。是的,如果您使用RemoteActorRefProvider(或ClusterActorRefProvider)获得此输出,cmbaxter很可能是正确的那么请提交一个bug。