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")
}