我的环境是 scala akka 和游戏!框架。我想知道是否有任何方法可以控制演员系统的创建或任何其他可以控制的想法。
我的想法是创建远程参与者,在用户点击购买时处理授权。因此,当用户发帖时,我在操作方法中创建了远程参与者系统和参与者:
def payment = Action { implicit request =>
var actorObject: Array[String] = new Array[String](23)
val system = ActorSystem("RemoteSystem", ConfigFactory.load.getConfig("remotecreation")
val worker = system.actorOf(Props[authNetActor.AuthNetActorMain].withRouter(FromConfig()), name = "remoteActor")
...
system.shutdown()
}
这是application.conf中remotecreation的定义
remotecreation { #user defined name for the configuration
include "common"
akka {
actor {
serialize-messages = on
serialize-creators = on
serializers {
proto = "akka.serialization.ProtobufSerializer"
java = "akka.serialization.JavaSerializer"
arr = "models.ArraySerializer"
}
serialization-bindings {
"com.google.protobuf.Message" = proto
"java.lang.String" = java
"java.util.Arrays" = java
"scala.Array" = arr
"akka.actor.ActorRef" = java
}
deployment {
/remoteActor { #Specifically has to be the name of the remote actor
remote = "akka://ActorApplication@172.17.100.232:2552"
router = "round-robin"
nr-of-instances = 1
}
}
}
remote.netty.port = 2554
}
}
我遇到的问题是,当我连续提交两次时,我得到一个错误,因为我试图在一个已经有一个演员系统的 IP 地址上创建一个演员系统。
我绝对认为我需要移动它,但我不确定在哪里,因为这将是一个广泛的多用户游戏!应用程序,当数百名用户使用该应用程序时,我不确定我可以将actor系统的创建放在哪里而不会发生冲突。
任何想法、建议或帮助表示赞赏。