2016-08-05 37 views
0

Ich lerne akka und bin mir nicht sicher, wie man am besten organisiert, meine Schauspieler zu bekommen/zu schaffen.akka.net Managing Schauspieler hiearchy und erstellen/bekommen Schauspieler

Im Moment habe ich ein Setup wie

Department (1000s) can each have many items (10000s) and each item has properties and work that can be done to it 

Wenn ich will, um eine Aufgabe zu Punkt C durchzuführen, die in der Abteilung 3, was der beste Weg, dies zu tun ist?

Ich habe gerade alles so einrichten, dass ich hätte 3 Abteilung eine Nachricht sagen, dann in der Abteilung 3 Schauspieler würde ich den Artikel C Schauspieler die gleiche Botschaft erzählen.

Das Problem, das ich damit sehe, ist, dass ich dem Item immer etwas mitteilen möchte, dass ich die Nachricht an 2 Stellen behandeln muss (Abteilung und Item). Das fühlt sich falsch an, aber vielleicht liegt es daran, dass ich das Muster nicht verstehe.

ich auch bin zu wollen diese Stateful sein, so möchte ich die Schauspieler beharren. Das schafft eine weitere Herausforderung für mich. Woher weiß ich, ob Abteilung 3 geladen ist (Und wenn ich Abteilung 3 habe, woher weiß ich, ob ein Akteur für Artikel B initialisiert wird)? Ich könnte einfach die Selection-Methode für den Context verwenden, aber dann muss ich seine Identität überprüfen, um festzustellen, ob sie wirklich da ist. Was ich getan habe, ist, eine Liste der geladenen Abteilungen zu verwalten, dann zu überprüfen, ob meine Abteilung in dieser Liste ist, dann die Abteilung zu bekommen oder sie zu erstellen.

Mit diesem Prozess habe ich einen anderen Akteur eingeführt, der die Liste aller meiner Abteilungen verwaltet. Jetzt müssen alle Nachrichten, die ich an meinen Akteur B-Akteur senden möchte, durch den Akteur gehen, der alle Abteilungen, Abteilung 3 Akteur, dann schließlich zu Gegenstand B Akteur führt. Das fühlt sich jetzt noch schlimmer an als zuvor.

Jetzt habe ich auch Abteilungsleiter, der alle Abteilungen kennt, die geladen werden, dass alle Nachrichten durchlaufen müssen (Abteilungszielnachrichten und Zielnachrichten). An diesem Punkt fließen alle Nachrichten durch diesen einzelnen Akteur, was mich jetzt um Leistung und Wartbarkeit besorgt. Meine Frage ist: Gibt es eine bessere Möglichkeit, diese Eltern/Kind-Beziehungen zu haben, während sie statusbehaftet bleiben und eine Nachricht an ein Objekt senden können, ohne zu wissen, ob die Abteilung, in der sie sich befindet, geladen ist oder ob sie geladen ist selbst?

Antwort

2

Es gibt einige Diskussionen here in Bezug auf die Überprüfung, ob ein Schauspieler existiert. Eine Strategie besteht darin, alle Ihre Abteilungsakteure mithilfe eines Supervisors zu erstellen und diese zu verwenden, um Fehler wie besprochen zu behandeln. here. Ihr Vorgesetzter würde wissen, welche Akteure bereits erstellt wurden und wird bei einem Fehler benachrichtigt, so dass Sie hier damit umgehen können.

Müssen Sie die Akteure in Items aufteilen? Sie klingen mehr nach Nachrichtentypen für mich. Könnten Sie nicht einfach die Abteilungen modellieren und ihnen dann Nachrichten schicken? Alternativ könnten Sie DepartmentItem Actors haben? (d. h. keine Abteilung Schauspieler, modellieren Sie einfach die Gegenstände?). Wenn Sie Elemente als Akteure modellieren müssen, dann denke ich, was Sie haben, ist der richtige Weg - Vorgesetzte mit Kindern sind der richtige Weg. Sie können die Meldungen immer weiterleiten, wenn es hilft:

target.Forward(result, Context);