Akka 阿克卡演员创作问题

Akka 阿克卡演员创作问题,akka,Akka,我正在尝试创建一个可以远程和本地访问的参与者。 下面创建的参与者抛出一个异常。有什么想法吗 val myLocalActor2=system.actorOf(Props[ActorNodes],name= "akka://JtsSystem@127.0.0.1:2552/MyOwnRef“ 这是以编程方式创建本地和远程的actor的最佳且唯一的方法吗?actorOf中的“名称”只是一个路径段。这将标识新创建的参与者。请参阅此处以了解有关此方面的更多信息: 另外,拥有本地和远程的东西是没有意义

我正在尝试创建一个可以远程和本地访问的参与者。 下面创建的参与者抛出一个异常。有什么想法吗


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

这是以编程方式创建本地和远程的actor的最佳且唯一的方法吗?

actorOf中的“名称”只是一个路径段。这将标识新创建的参与者。请参阅此处以了解有关此方面的更多信息:

另外,拥有本地和远程的东西是没有意义的,但是我假设你的意思是它应该是本地的,并且可以从某个远程节点访问?如果是这样,只需使用actorOf创建它,其他节点可以使用“actorFor”查找它:

请在此处阅读更多信息:

一般来说,请阅读文档,我们花了这么多时间在文档中,如果人们不阅读文档,就会觉得很浪费。

让文档正常工作(除了全球注册):

使用application.conf(我正在考虑在ActorSystem上以编程方式执行此操作)

Thx

下一步是广播该信息,以便所有服务都知道每个参与者的位置。可能使用此处概述的想法:


嗨,维克多,我的意思是“本地创建”但是在远程和本地都是透明的。因此,我想给参与者一个特定的路径,在本地创建一个,这样我就可以远程查找它。因此,问题是如何使用actorOf为我的本地参与者分配一个路径?这个想法也是为了广播这些信息,以便远程客户端确实需要明确地知道locat远程节点的注册,但他们可以在某种全局注册表中查找它?(顺便说一句,我读了文档)要拥有一个全球注册,你需要共识,要获得共识,你需要某种形式的集群。我们目前正在为Akka实施一个集群解决方案,但现在你需要通过其他共识的方式来解决这个问题。好的。Thx。我想我将使用jGroups进行某种广播。
val remoteActor = system.actorFor("akka://CalculatorApplication@127.0.0.1:2552/user/simpleCalculator")
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")
}