我试图阻止系统中存在共享相同名称的参与者的可能性(它们位于不同的路径上,因此InvalidActorNameException
不会被抛出)
应用程序.conf:
someactor {
akka.remote.netty.tcp.port = 6405
akka.cluster.auto-down-unreachable-after = 20s
akka.cluster.seed-nodes = ["akka.tcp://mySys@127.0.0.1:2552"]
akka.actor.provider = "akka.cluster.ClusterActorRefProvider"
}
主要的:
object SomeActor extends App {
val system = ActorSystem("mySys", ConfigFactory.load("application").getConfig("someactor"))
val t = system.actorOf(Props(classOf[SomeActor]), "someActor")
}
演员:
class SomeActor extends Actor {
val cluster = Cluster(SomeActor.system)
override def receive = {
case x=> println(x)
}
}
如果您使用 6405 端口运行应用程序一次,然后使用 6406 端口运行应用程序,那么应用程序将工作,但我希望它注意到系统已经包含一个名为“someActor”的参与者并阻止该调用。
我不介意将名称添加为角色或其他配置,如果它能够阻止它,但我不能拥有像包含现有名称的地图的状态(或包含带有消息传递的地图的演员) 或进行长时间运行的操作(无论如何,如果从多个地方并行调用actorSelection
它们将不安全)。actorOf