2013-05-15 35 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")