1

私はあなたが以前に抱えていたのと同じ問題を抱えています: " Akka 2.0 RC2 でのリモート アクターの展開でエラーが発生する"

どのように解決しましたか?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");

よろしく、 ホセ

4

2 に答える 2

0

同じマシンでリモート アクターにアクセスしている場合、127.0.0.1 の localhost アドレスまたはマシンの実際の IP アドレスを、リモート アクターの構成とアクター ユーザーのアクター宣言の両方で使用する必要があることを発見しました。混合できません。

リモート アクターの構成

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")
于 2013-05-17T13:06:50.493 に答える
-1

まず、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
    }
  }
}

アクター ref プロバイダーがRemoteActorRefProviderデフォルトではなく に設定されていることがわかりますLocalActorRefProvider。送信側のアクター側でこれがないと、うまくいきません。また、netty バインディング情報がセットアップされていることもわかります。これはActorSystem、リモート接続とメッセージをリッスンする受信アクター側で非常に重要です。ドキュメントの手順に従って受信側のアクター システムを起動すると、うまくいくActorSystem("KSystem")はずです。

于 2013-05-17T00:43:24.013 に答える