2016-08-04 15 views
0

Ich konnte nicht finden, bearbeitet von RoundRobingGroup in Akka (Beispiele in der Dokumentation konnte mir nicht helfen). Ich möchte zwei Akteure in einer RoundRobinGroup binden und einfach eine einfache Nachricht mit Akka (via Router-Variable) senden, aber ich erhalte immer den Deadletter in Logs.Einfaches Beispiel von RoudnRobinGroup in Akka

object Main extends App { 
     val system = ActorSystem() 

     val paths = List("w1", "w2") 
     val w1 = system.actorOf(Props[HelloActor], name = "w1") 
     val w2 = system.actorOf(Props[HelloActor], name = "w2") 
     val router = system.actorOf(new RoundRobinGroup(paths).props(), "shard") 

     router ! "hello" 
} 

Ich würde gerne wissen, wo ist mein Fehler.

Antwort

-1

Es gelöst mein Problem

class Master extends Actor {  
      var router = { 
      val routees = Vector.fill(2) { 
       val mappings = context.actorOf(Props[HelloActor]) 
       context watch mappings 
       ActorRefRoutee(mappings) 
      } 
      Router(RoundRobinRoutingLogic(), routees) 
      } 

      def receive = { 
      case message: String => 
       router.route(message, sender()) 
      case Terminated(a) => 
       router = router.removeRoutee(a) 
       val r = context.actorOf(Props[HelloActor]) 
       context watch r 
       router = router.addRoutee(r) 
      } 
     } 

     class HelloActor extends Actor { 
      override def receive: Receive = { 
      case "hello" => println("Another actor said hello") 
      case _ => println("Unrecognized message") 
      } 
     } 

     object Main extends App { 
      val system = ActorSystem() 
      val master = system.actorOf(Props[Master], name = "parent") 
      master ! "hello" 
     } 
+0

Können Sie mir bitte den Fehler geben, da wir nicht den ganzen Tag Zeit haben, den Fehler im Code zu sehen! Bitte verstehen Sie –

+0

Ich löste mein Problem. Kannst du bitte diesen Code auf "schlechte Orte" (ich habe den Beitrag oben bearbeitet) überprüfen. – pacman

0

Sie können einen Router mit zwei Instanzen von HelloActor und Routern erstellen und RoundRobinRoutingLogic als Routing-Logik verwenden. Sie können eine detaillierte Information hier erhalten: http://doc.akka.io/docs/akka/current/scala/routing.html

Ich hoffe, ich habe dein Problem gelöst!

+0

Danke, aber in welchem ​​Ort ich soll 'RounRobinRoutingLogic' meine„Hallo Welt“App anhänge (vielleicht ist es dumme Frage, aber Dokumentation besteht aus nicht abgeschlossen und verstreuten Beispiel) ? – pacman

+0

Siehe dieses Beispiel sie haben es definiert http://doc.akka.io/docs/akka/current/scala/routing.html#A_Simple_Router Machen Sie den Router und verwenden Sie die RounRobinRoutingLogic mit ihm. Sie können es auch in der Konfiguration definieren. Wenn es dir geholfen hat, bitte upvote und akzeptiere die Antwort. :) –

+0

Ich habe gemacht, wie Sie mir gesagt haben, können Sie mir helfen, den Fehler zu finden (in der Post unten)? – pacman