Moja aplikacja musi być w stanie utworzyć strukturę drzewa aktorów. Standardowy sposób na to, jak sądzę, to umieszczenie kodu instancji wewnątrz aktorów, aby mogli utworzyć swoje dzieci. Podejściem, które wolałbym raczej być, by móc stworzyć aktora na danej ścieżce. Takich jak stworzenie aktor A w mySystem, a następnie możliwość bezpośredniego tworzenia akka: // mySystem/A/B i innych aktorów. Czy taka funkcjonalność istnieje? Uprościłoby to mój kod znacznie.Ręczne tworzenie hierarchii aktorów w akka
EDYCJA: Teraz, gdy nie ma mnie w telefonie, pozwól, że się rozwiną.
że mam klasę
class myActor extends actor
i muszę dokonać n-drogi drzewa z nich. Zamiast kodu potrzebnego do wystąpienia własne dzieci w funkcji odbioru z czymś jak
case Create(n:Int) => {}
szukam uproszczenie kodu myActor przez nie w tym żadnej z tych rzeczy, a zamiast tego jest w stanie tworzyć moją hierarchię na początku mojego kodu ręcznie. Więc idealnie coś takiego (zakładając hipotetyczną funkcją statycznego „stworzyć”):
val sys = ActorSystem("mySystem")
Akka.Actors.Create("akka://mySystem/a", new myActor())
Akka.Actors.Create("akka://mySystem/a/b", new myActor())
Akka.Actors.Create("akka://mySystem/a/c", new myActor())
która powodowałaby drzewo Aktor:
a
/\
b c
Teraz, czy to istnieje? Czy istnieje lepszy sposób na zrobienie tego bez zagracania mojego kodu aktora za pomocą kodu instancji?
EDIT, runda 2:
Ok, wygląda ta funkcja nie istnieje. Zamiast tego stworzyłem sub-cechę aktora i wymusiłem tam cały mój kod instancji, aby moje konkretne klasy implementacji były nadal uporządkowane.
Widzę, że teoretycznie jest to dobra odpowiedź, ale nie mogę nie zauważyć, ile spaghetti kodu wynika z dużych hierarchii systemu aktorów. Centralna konfiguracja, o której mowa w pytaniu, może zapewnić mechanizm do jasnego zrozumienia ogólnej hierarchii dla praktycznych celów oprogramowania. Czy poleciłbyś jakąś alternatywną metodę wyjaśnienia złożonych hierarchii? Czy jest to po prostu sposób, w jaki należy nadać relacje między rodzicem a dzieckiem? –
Trudno mi jest odpowiedzieć na to pytanie, ponieważ zdajesz się sugerować kontekst, którego nie mam. Systemy aktorów są zorganizowane w poddrzewach zapewniających określoną funkcjonalność, w tym sensie, że są bardzo modułowe. Punktem wyjścia dla każdego z tych submodułów jest jego najlepszy aktor, który faktycznie JEST swoim całym poddrzewem. Widzę, jak złamanie tego modelu przez próbę zainstalowania aktorów w obrębie poddrzew z zewnątrz dałoby kod spaghetti, ponieważ po prostu nie jest to zamierzone. Kiedy aktor musi stworzyć dziecko, może na przykład spojrzeć na konfigurację, aby ustalić, jak to zrobić. –