Obecnie jestem w trakcie tworzenia całkiem dużej aplikacji Java opartej na Akka i mam kilka problemów, które mnie nie mają końca.Konwencje nazewnictwa dla wiadomości i aktorów Akka
Mój obecny układ pakiet wygląda trochę tak:
Mobile
Moja klasa służąc jako nadzorcy aktorów wewnątrz opakowania actors
.
Ponieważ nie chcę, aby utworzyć nowy zestaw Aktorzy dla każdego HttpClient
i Account
mijam tych wokół obiektów w wiadomości, które są przechowywane w opakowaniu wiadomości, wraz z końcowym ActorRef
który odbiera końcowy rezultat. To jednak tworzy bardzo zagracony pakiet messages
z inną wiadomością dla każdego aktora. Na przykład. MobileForActor1
, Actor1ForMobile
, MobileForActor2
itd. Teraz moje pytanie brzmi: czy istnieje konwencja, której należy użyć do tego rodzaju rzeczy, która zajmuje się tym problemem i jest moją strukturą (Mobile
->Actor1
->Mobile
->Actor2
-> itp.) Sposób Akka chce, żeby to było, czy muszę po prostu przeskoczyć wiadomości (Mobile
->Actor1
->Actor2
-> itp.)?
Teraz jestem wysyłając ConnectMessage
do mojego Mobile
aktora, który następnie wysyła go do Actor1
, Actor1
przetwarza je i wysyła nową wiadomość z powrotem do Mobile
, Mobile
przesyła tę odpowiedź następnie Actor2
i cykl trwa z nowej wiadomości tworzone w oparciu o starą wiadomość. Na przykład. new Message2(message1.foo, message1.bar, message1.baz, newComputatedResult, newComputatedResult2, etc);
Czy to dobra praktyka, czy też powinienem dołączyć starą instancję (która może zawierać informacje, które nie są już przydatne) i zawierać nowe rzeczy? Na przykład. new Message2(message1, newComputatedResult, newComputatedResult2, etc);
Czy powinienem zrobić coś zupełnie innego?
Pomyślałem o użyciu TypedActors, ale te wymagają użycia wzoru wodospadu i nie wiem, jak przekazać na ActorRef słuchacza, który chce otrzymać końcowy wynik.
Mam nadzieję, że uczyniłem się na tyle zrozumiałym, ponieważ angielski nie jest moim dziewiczym językiem i że pytanie jest jasne dla wszystkich.
Jestem początkującym deweloperem firmy Akka i uwielbiam ten pomysł, ale ponieważ dokumentacja nie obejmuje tego zbyt dobrze, uznałem, że to najlepsze miejsce do zapytania. Dziękuje za przeczytanie!
Czy możesz pokazać kilka przykładów dobrego nazewnictwa wiadomości? Na przykład mam Dostawcę i Konsumenta. Konsument chce zapytać Dostawcę, ile ma towarów. Jak nazwałbyś wiadomości dla zapytania i odpowiedzi? –
@TemaBolshakov - A co powiesz na "GetGoodsCountRequest" i "GetGoodsCountResponse"? –
Nie jestem pewien, czy te nazwy są dość idiomatyczne w scala. Lubię pierwszy, ale później wygląda na nieco zbędny. Może lepiej odpowiedzieć Int? Lub zdefiniuj alias typu dla Int, na przykład "type GoodsCount = Int". Jaka jest najlepsza opcja w scala? –