0

リモートおよびローカルでアクセスできるアクターを作成しようとしています。以下で作成されたアクターは例外をスローします。何か案が?

val myLocalActor2 = system.actorOf(Props[ActorNodes], name = "akka://JtsSystem@127.0.0.1:2552/MyOwnRef")

これは、ローカルとリモートの両方であるアクターをプログラムで作成するための最良かつ唯一の方法ですか?

4

2 に答える 2

1

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をご覧ください。

一般的に、ドキュメントを読んでください。私たちはそれに多くの時間を費やしており、人々がそれを読まないと無駄に感じます。

于 2012-05-19T11:18:13.557 に答える
0

動作しました(グローバルレジストリは別として):

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

于 2012-05-19T12:31:57.500 に答える