Wie erstellt man Router in akka mit parametrisierten Aktoren?

8

Ich versuche einen Broadcast-Router in Scala zu verwenden, wenn ich mich nicht irre, sollte es so aussehen:

%Vor%

Das verstehe ich aus dem Tutorial, dem ich folge .

Der workerRouter fungiert als ein anderer Akteur und ich kann Nachrichten an diesen Router senden, der sie an alle Agenten sendet (so viele individuelle Definitionen wie ich habe).

Das Problem ist, dass ich die einzelnen Definitionen verwenden möchte, um die Agenten zu erstellen, sie nehmen tatsächlich einige Parameter im Konstruktor und diese Parameter sind in den einzelnen Definitionen.

F: Wie kann ich dem Router mitteilen, dass er diese Parameter als Teil des Konstruktors an alle übergeben soll?

Bitte beachten Sie, dass jeder Akteur eine individuelle Definition erhalten sollte und alle verschieden sind. Ich kann die Lösung nicht in einer verwandten Frage verwenden, in der der Konstruktor Konstanten erhält: Kann ein Router im Akka-Java-Actor-Modell Actors mit einem nicht standardmäßigen Konstruktor erstellen?

Bitte beachten Sie, dass hier jeder Akteur verschiedene Parameter haben sollte, wenn einer von ihnen neu gestartet wird, sollte er dieselben Parameter bekommen, die er an erster Stelle bekommen hat. Ich weiß nicht, ob diese Lösung geändert werden könnte, um das zu tun.

Eine mögliche Lösung könnte darin bestehen, einen Akteur als Router zu verwenden, um Erstellung (Konstruktor) und Routing zu trennen, wie in Frage gestellt wird Akka (Java), nicht blockierende Sendung an alle Kinder .

Ich bin mir nicht sicher, ob das in diesem Fall "richtig" ist. Die Verwendung eines Schauspielers als Router hat mehrere Probleme (neben der Eleganz). Ich bin besorgt über den Schauspieler, der als Router funktioniert, der neu gestartet wird und alle seine Abonnenten verliert. Wenn der Schauspieler in einer halben Schleife neu gestartet wird, könnten einige Schauspieler auch einige Nachrichten verpassen, wenn ich mich nicht irre.

Danke.

    
Trylks 20.08.2013, 15:28
quelle

2 Antworten

7

Sie können Router erstellen, indem Sie einige bereits erstellte Actors als routes definieren, die durch eine beliebige Logik erstellt werden.

Im folgenden Beispiel werden zwei unterschiedlich erstellte Aktoren erstellt und anschließend ein Round-Robin-Router erstellt, der die Nachrichten an sie weiterleitet.

%Vor%

Weitere Details hier: Ссылка

    
Marius Danila 20.08.2013, 20:29
quelle
1
%Vor%

Mit Akka 2.4.2 können wir einfach verwenden:

%Vor%

Dies ist der beste Aufwandscode, der in min ausgeführt wird. Zeit in akka.

    
Venkat Alugolu 19.09.2014 09:39
quelle

Tags und Links