Ich lerne Akka und ich versuche herauszufinden, wie Schauspieler miteinander reden (nennen wir sie A
und B
). Es ist kein Anfrage/Antwort-Szenario, A
und B
senden sich gegenseitig Nachrichten zu jeder Zeit.Akka actorFor vs einen DarstellerRef
Im Moment habe ich zwei Geschwister Schauspieler, die Nachrichten in beide Richtungen zueinander weitergeben. Sie sind beide direkt auf der ActorSystem
erstellt. Ich hatte zunächst die ActorRef
von A
in den Konstruktor B
übergeben. Aber ich kann die ActorRef
von B
nicht an den Konstruktor von A
übergeben, weil es noch nicht existiert, d. H. Ich kann diese Methode nicht für zirkulare Referenzen verwenden.
Ich habe über actorFor
gelesen und dies würde mich einen Schauspieler suchen lassen, der seinen Weg benutzt. Ich bin jedoch nicht mit dieser Einstellung vertraut, denn wenn sich der Pfad ändert, wird er nicht vom Compiler abgefangen.
Eine weitere Alternative, hat jeder Akteur unter Berücksichtigung Zugang zu ihm Eltern, ist es, die Nachrichten von A
und B
an die Eltern weitergeben und haben dann die Eltern die Nachricht übergeben zurück auf A
und B
. Dies koppelt jedoch die Eltern an die Nachrichtentypen, die hin und her weitergeleitet werden.
Was sind Strategien, die Menschen nutzen, um Schauspieler auf einander aufmerksam zu machen? Bin ich zu vorsichtig damit, Schauspieler auf dem Weg nach oben zu sehen?
Haben Sie versucht, 'Lazy Val's bei der Instanziierung Ihrer' ActorRef' zu verwenden? Ich kann mir vorstellen, dass dies helfen würde, die zirkuläre Abhängigkeit zu lösen. Angenommen, Sie verwenden Scala natürlich ... – agilesteel
Ich habe es einfach gemacht und es funktioniert. Ich wusste nicht, dass du ein Lazy Val referenzierst, bevor es definiert wird - verrücktes Zeug! Danke für den Tipp. Ich werde immer noch interessiert zu wissen, wie Leute über das Überschreiten von ActorRefs vs Pfade fühlen. – Geoff
Stellen Sie sicher, dass Sie http://doc.akka.io/docs/akka/2.0.2/general/addressing.html gelesen haben. – sourcedelica