【发布时间】:2013-10-25 21:00:09
【问题描述】:
我有一个 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]
当我尝试向它发送一条消息时,它会在控制台中给我一个死信错误日志 我不太确定我做错了什么,但看起来我试图用来查找远程演员的系统正在搞乱我的 actorSelection 调用。我是否需要在同一个系统中才能引用远程参与者?我认为这是使用 akka 的要点之一?
【问题讨论】:
-
您应该检查您的 akka 配置,并确保您在尝试查找远程参与者的系统中使用的是 RemoteActorRefProvider 而不是默认的 LocalActorRefProvider。
-
是的,cmbaxter 很可能是正确的,如果您使用 RemoteActorRefProvider(或 ClusterActorRefProvider)获得此输出,那么请提交错误。