簡體   English   中英

Akka Remoting:連接被拒絕:“告訴”方法中沒有更多信息

[英]Akka Remoting: Connection refused: no further information in “tell” method

我之前遇到了同樣的問題:“ 在Akka 2.0 RC2中使用遠程actor部署時出錯

您是如何解決的? 我正在使用Akka 2.1.2,但是我認為我的問題是概念。

我創建演員:

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

然后在其他jvm中嘗試查找它:

ActorRef actorFor = system.actorFor("akka://KSystem@127.0.0.1:2552/user/injbct");

問候,何塞

我發現,如果您要在同一台計算機上訪問遠程角色,則必須在遠程角色的配置和角色用戶中的角色聲明中都使用本地地址127.0.0.1或計算機的實際IP地址。不能混在一起。

遠程actor配置

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

考慮機器的IP地址為1.2.3.4,則

這有效

val workerRouter = 
    context.actorFor("akka://PrimeWorkerKernel@127.0.0.1:2554/user/PrimeWorkerActor")

這不會導致連接被拒絕

val workerRouter = 
    context.actorFor("akka://PrimeWorkerKernel@1.2.3.4:2554/user/PrimeWorkerActor")

對於初學者,您應該閱讀Akka Remoting文檔 然后,確保您的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
    }
  }
}

您會注意到,actor ref提供程序已設置為RemoteActorRefProvider ,而不是默認的LocalActorRefProvider 如果在發送方方面沒有此功能,那么事情將無法進行。 您還將看到已經設置了Netty綁定信息,這在接收Actor方面非常重要,這樣ActorSystem偵聽遠程連接和消息。 如果您按照文檔中的步驟操作,並以ActorSystem("KSystem")啟動接收方Actor系統,那么一切對您都應該起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM