リモートおよびローカルでアクセスできるアクターを作成しようとしています。以下で作成されたアクターは例外をスローします。何か案が?
val myLocalActor2 = system.actorOf(Props[ActorNodes], name =
"akka://JtsSystem@127.0.0.1:2552/MyOwnRef")
これは、ローカルとリモートの両方であるアクターをプログラムで作成するための最良かつ唯一の方法ですか?
リモートおよびローカルでアクセスできるアクターを作成しようとしています。以下で作成されたアクターは例外をスローします。何か案が?
val myLocalActor2 = system.actorOf(Props[ActorNodes], name =
"akka://JtsSystem@127.0.0.1:2552/MyOwnRef")
これは、ローカルとリモートの両方であるアクターをプログラムで作成するための最良かつ唯一の方法ですか?
actorOfの「名前」は単なるパスセグメントです。これにより、新しく作成されたアクターが識別されます。詳細については、こちらをご覧ください: http: //doc.akka.io/docs/akka/2.0.1/general/addressing.html
また、ローカルとリモートの両方であるものを使用することは意味がありませんが、ローカルであり、リモートノードからアクセスできる必要があるということですか?その場合は、actorOfを使用して作成するだけで、他のノードは「actorFor」を使用して検索できます。
val remoteActor = system.actorFor("akka://CalculatorApplication@127.0.0.1:2552/user/simpleCalculator")
詳細については、http://doc.akka.io/docs/akka/2.0.1/scala/remoting.htmlをご覧ください。
一般的に、ドキュメントを読んでください。私たちはそれに多くの時間を費やしており、人々がそれを読まないと無駄に感じます。
動作しました(グローバルレジストリは別として):
case class ActorMsg(val msg: String)
sealed class ActorNodes extends Actor {
override def receive = {
case ActorMsg(msg) => println("Actor Msg " + msg)
case _ => println("Everything else")
}
}
object JtsListener extends App {
val sys = "JtsSystem"
val system = ActorSystem(sys)
// println("System: " + system.settings)
val myLocalActor1 = system.actorOf(Props[ActorNodes], "MyLocalRef")
println("MyLocalActor 1: " + myLocalActor1 + " has path " + myLocalActor1.path)
myLocalActor1 ! new ActorMsg("Hello")
val myLocalActor2 = system.actorFor("akka://"+sys+"@127.0.0.1:2552/user/MyLocalRef");
println("MyLocalActor 2: " + myLocalActor2 + " has path " + myLocalActor2.path)
myLocalActor2 ! new ActorMsg("Hello Again")
}
application.confを使用します(ActorSystemでこれをプログラムで実行することを検討しています
どうも。
次のステップは、その情報をブロードキャストして、すべてのサービスが各アクターがどこにいるかを認識できるようにすることです。おそらくそこで概説されているアイデアを使用します。
http://blog.vasilrem.com/even-simpler-scalability-with-akka-through-re