Ich bin gerade dabei, eine ziemlich große Akka-basierte Java-Anwendung zu erstellen, und ich stoße auf ein paar Probleme, die mich zu keinem Ende bringen.Namenskonventionen für Akka-Nachrichten und -Aktoren
Mein aktuelles Paket Layout sieht irgendwie wie folgen aus:
Meine Mobile
Klasse, die als Supervisor der Akteure innerhalb des actors
Pakets dient.
Da will ich nicht einen neuen Satz von Schauspielern jeden HttpClient
und Account
, denn ich die um in Botschaftsobjekten passieren schaffen, die in den Nachrichten Paket gespeichert sind, zusammen mit dem Endpunkt ActorRef
, die das Endergebnis erhält. Dies erzeugt jedoch ein sehr überfülltes messages
-Paket mit einer anderen Nachricht für jeden Akteur. Z.B. MobileForActor1
, Actor1ForMobile
, MobileForActor2
usw. Nun meine Frage ist, gibt es eine Konvention für diese Art von Sachen zu verwenden, die sich mit diesem Problem beschäftigt und ist meine Struktur (Mobile
->Actor1
->Mobile
->Actor2
. -> usw.), um die Art und Weise Akka will es sein, oder muss ich nur die Nachrichten Wasserfall (Mobile
->Actor1
->Actor2
-> etc.)
Im Moment bin ich ein ConnectMessage
meiner Mobile
Schauspieler zu senden, die dann zu Actor1
sendet, es Actor1
Prozesse und sendet eine neue Nachricht zurück an Mobile
sendet Mobile
diese Antwort dann auf Actor2
und der Zyklus geht weiter mit einer neuen Nachricht basierend auf der alten Nachricht erstellt werden. Z.B. new Message2(message1.foo, message1.bar, message1.baz, newComputatedResult, newComputatedResult2, etc);
Ist diese gute Praxis oder sollte ich die alte Instanz (die möglicherweise Informationen enthält, die nicht mehr nützlich sind) und die neuen Sachen einbeziehen? Z.B. new Message2(message1, newComputatedResult, newComputatedResult2, etc);
Oder sollte ich etwas komplett anderes machen?
Ich dachte über TypedActors, aber diese erfordern die Verwendung eines Wasserfallmusters und ich weiß nicht, wie ich den ActorRef des Zuhörers weiterleiten würde, der das Endergebnis erhalten möchte.
Ich hoffe, ich habe mich verständlich genug gemacht, weil Englisch nicht meine ersten Sprachen ist und dass die Frage jedem klar ist.
Ich bin ein Anfänger Akka Entwickler und liebe die Idee, aber da die Dokumentation dies nicht sehr gut abdeckt, dachte ich, dies wäre der beste Ort, um zu fragen. Danke fürs Lesen!
Können Sie einige Beispiele für eine gute Benennung von Nachrichten zeigen? Zum Beispiel habe ich einen Lieferanten und einen Verbraucher. Der Verbraucher möchte den Lieferanten fragen, wie viele Waren er hat. Wie würden Sie Nachrichten für Anfrage und Antwort benennen? –
@TemaBolshakov - Wie wäre es mit "GetGoodsCountRequest" und "GetGoodsCountResponse"? –
nicht sicher diese Namen idiomatisch genug in scala. Ich mag den ersten, aber der spätere sieht ein bisschen überflüssig aus. Vielleicht ist es besser, mit Int zu antworten? Oder definieren Sie einen Typalias für Int, zum Beispiel 'type GoodsCount = Int '. Was ist die beste Option in Scala? –