2013-05-15 34 views
0

没有进一步的信息,我中有你有一段时间以前同样的问题: “Getting errors with remote actor deployment in Akka 2.0 RC2阿卡远程处理:连接被拒绝:在“说”的方法

如何做yousolve呢?我使用Akka 2.1.2,但我认为我的问题是这个概念。

我创作的演员:

ActorRef actorOf = system.actorOf(new Props(HelloWorld.class), "injbct"); 

,然后在其他JVM我尝试查找起来:

ActorRef actorFor = system.actorFor("akka://[email protected]:2552/user/injbct"); 

问候,何塞

+0

Wha你的'akka.remote'配置是否适合这两个系统?另外,您是否看到任何侦听端口2552(netstat -an | grep 2552) – sourcedelica

回答

-1

首先,你应该阅读Akka Remoting documentation 。然后,请确保您有远程处理依赖于你的POM文件:

<dependency> 
    <groupId>com.typesafe.akka</groupId> 
    <artifactId>akka-remote_2.10</artifactId> 
    <version>2.1.4</version> 
</dependency> 

然后,双方(呼叫方和接收方都需要在他们的application.conf远程处理配置文件中的远程处理类似的例子文档:

akka { 
    actor { 
    provider = "akka.remote.RemoteActorRefProvider" 
    } 
    remote { 
    transport = "akka.remote.netty.NettyRemoteTransport" 
    netty { 
     hostname = "127.0.0.1" 
     port = 2552 
    } 
    } 
} 

你会注意到演员裁判提供商已被设置为,而不是默认的LocalActorRefProvider如果没有这种对发送演员侧RemoteActorRefProvider,那么就会出问题你也可以看到。 netty绑定信息已经设置好了,这对于接收角色来说非常重要ActorSystem正在监听远程连接和消息。如果您按照文档中的步骤操作并启动您的接收角色系统为ActorSystem("KSystem"),那么事情应该适合您。

+1

当使用不同的机器时,您想更改hostname =“127.0.0.1”,否则它们将无法通信。 –

+1

当为两个参与者系统使用相同的主机时,您想更改其中一个参与者系统的端口,因为它们无法绑定到相同的端口。 –

0

我发现如果你在同一台机器上访问一个远程参与者,127.0.0.1的本地主机地址或机器的实际IP地址必须在远程参与者的配置和参与者的参与者声明中使用用户,即他们不能混合。

远程演员配置

remote { 
    transport = "akka.remote.netty.NettyRemoteTransport" 
    netty { 
     hostname = "127.0.0.1" 
     port = 2554 

考虑机器有1.2.3.4的IP地址,然后

这工作

val workerRouter = 
    context.actorFor("akka://[email protected]:2554/user/PrimeWorkerActor") 

这不和导致连接拒绝

val workerRouter = 
    context.actorFor("akka://[email protected]:2554/user/PrimeWorkerActor")