私の環境は、eclipse、play、akka、scala です。リモート マスター akka アクターを作成しようとすると、エラーが発生します。
このエラーが発生する理由がわかりません:
[InvalidActorNameException: アクター名 hello が一意ではありません!]
ユーザーがフォームを送信すると、次のようにcalculate
呼び出されます。
options => {
this.calculate(options.numWorkers.toInt, options.numElements.toInt, options.numMessages.toInt)
//Redirect(routes.Application.)
Ok(html.form(this.optionsForm))
}
アクターを作成するコードは次のとおりです
val master = RemoteSystem.system.actorOf(Props[Master], "hello")
master
また、このアクターのインスタンスを 1 つだけ作成し、Master
、 、などの他の多くの名前を試しましmaster1983274612987346198356
た。
Master
と定義されている:
class Master extends Actor {
var pi: Double = _
var nrOfResults: Int = _
var start: Long = _
def receive = {
case calculate(numWorkers, numElements, numMessages) =>{
for (i <- 0 until numWorkers) {
val worker = RemoteSystem.system.actorOf(Props[Worker], "Worker")
for(j <- 0 until numMessages)
{
worker ! Work(0, numElements)
}
}
}
case PiResult(start, numTerms, acc) => println("Pi Result: " + acc)
}
override def preStart() {
start = System.currentTimeMillis
}
override def postStop() {
println(
"\n\tCalculation time: \t%s millis".format(System.currentTimeMillis - start))
}
}
アクターシステムは次のとおりです。
object RemoteSystem {
val system = ActorSystem(
"RemoteCreation", ConfigFactory.load.getConfig("remotecreation"))
}
は次remotecreation
のように定義されます。
remotecreation{
include "common"
akka {
actor{
deployment{
/Worker{
remote="akka://Pi@10.0.100.254:2552"
}
}
}
remote.netty.port = 2554
}
}