Akka Akteure - Schaffung Pool von Schauspielern

Habe ich die folgenden Akka Schauspieler code in Scala. Code funktioniert gut, wenn eine einzelne workerActor erstellt. Aber code lautlos schlägt fehl, wenn ich versuchen, erstellen Sie einen pool von worker-Akteure mit round-robin-Logik. Irgendeine Idee, wie man dieses Problem beheben? Wie bekomme ich mehr debug-info gedruckt werden?

import scala.collection.immutable.Map
import scala.collection.mutable.ArrayBuffer

import akka.actor.actorRef2Scala
import akka.actor.ActorSystem
import akka.actor.Props
import scala.concurrent.Await
import scala.concurrent.duration._
import akka.pattern.ask
import akka.util.Timeout
import akka.actor._
import org.junit._
import org.junit.Assert._
import messaging.actors._
import akka.routing.RoundRobinRouter
import akka.routing._

class MainEngineActorTest {

  @Test
  def testMainActor () = {
  val _system = ActorSystem("MainEngineActor")
  val master = _system.actorOf(Props[MainEngineActor], name = "EngineActor")

  println ("Created Main Engine Actor")


  implicit val timeout = Timeout(5 seconds)

  val userID = new UserID ("test1")

  println ("Sending messages")

  for (i <- ( 1 to 10)) {
      master ! "Hello"
      master ! "World"
  }

  }
}

class MainEngineActor extends Actor with ActorLogging{

  //works if we create only a single workerActor
  //val workerActors = context.actorOf(Props[WorkerActor], name = "WorkerActors")

  //Doesn't work when we create a pool of worker actors - how do we fix this? 
  //why doesn't this work and why aren't any error messages printed?
  val workerActors = context.actorOf(RoundRobinPool(5).props(Props[WorkerActor]), name = "WorkerActors")

   def receive: Receive = {     
     case request => {       
       workerActors forward request
     }    
  }
}  

class WorkerActor extends Actor {

   def receive: Receive = {               
     case request => {
       println ("RequestReceived =" + request)
     }
   }
}
  • Was bedeutet "leise ausfällt" bedeuten? Bekommt man keine Ausgabe?
  • Ich gehe davon aus, dass die Akteure zu drucken: "RequestReceived =Welt RequestReceived =Hallo", aber die Akteure nicht alles drucken. Wenn ich allerdings nur das erstellen einer einzigen Schauspieler (anstatt einen pool von Schauspielern), funktioniert alles einwandfrei.
  • Es wäre hilfreich, wenn Sie post von der akka-version Sie verwenden, router Initialisierungs-syntax geändert mit Akka 2.3
InformationsquelleAutor user3482479 | 2014-04-01
Schreibe einen Kommentar