Playのインスタンス!フレームワークアプリケーションは、単純な構成を使用してリモートAkkaノード(つまり、マスターノード)に接続できます。
2つの方法があります:
- デフォルトのアクターシステムをオーバーライドする
- 新しいアクターシステムを定義する
2番目のものを使用することをお勧めします。この場合、application.confに次のようなものを追加する必要があります
master {
akka {
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
transport = "akka.remote.netty.NettyRemoteTransport"
netty {
hostname = "your-master-host-name"
port = 0
}
}
}
}
その後、あなたのプレイで!この方法でリモートマスターノードに接続できるアプリ
ActorSystem system = ActorSystem.create("master", ConfigFactory.load().getConfig("master"))
ActorRef master = system.actorFor("akka://master@your-master-host-name:your-master-port/user/master")
デフォルトのPlayAkkaアクターシステムをオーバーライドしたい場合。参照構成は次のとおりです:http ://www.playframework.org/documentation/2.0.3/AkkaCore
マスタークラスターノードと計算クラスターノードについては、ここで説明されているアーキテクチャとコードを使用することをお勧めします:http: //letitcrash.com/post/29044669086/balancing-workload-across-nodes-with-akka-2
マスターノードと計算ノードがWebまたはRESTインターフェースを必要としない場合は、それらを単純なJavaプログラムとして実装できます。
引用された記事では、ノードはリモートで公開されていません。これを行うには、マスターノードアプリにapplication.confを追加するだけです。
master {
akka {
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
transport = "akka.remote.netty.NettyRemoteTransport"
netty {
hostname = "your-master-host-name"
port = your-master-port
}
}
}
}
そして、actorOfメソッドでインスタンス化します
ActorSystem system = ActorSystem.create("master", ConfigFactory.load().getConfig("master"))
ActorRef master = system.actorOf(new Props(Master.class), "master")
計算ノードは、Play!と同じ方法で構成する必要があります。ノード。
マスターノードのみにTCP-IPポートが定義されていることに注意してください。非マスターノードは0ポートを使用します。これにより、Akkaはランダムな空きポートを選択するように構成されます。必要な唯一の既知のhost:portアドレスはマスターアドレスであり、起動時にすべてのノードがポイントする必要があるため、これは正しいです。