Attualmente sono in procinto di creare un'applicazione Java Akka piuttosto grande e sto incontrando un paio di problemi che mi fanno impazzire.Convenzioni di denominazione per i messaggi e gli attori di Akka
mio layout attuale pacchetto si presenta un po 'come questo:
La mia classe Mobile
servire come supervisore degli attori all'interno del pacchetto actors
.
Dal momento che non voglio creare un nuovo insieme di attori per ogni HttpClient
e Account
, passo quelli intorno a oggetti dei messaggi, che vengono memorizzati nel pacchetto messaggi, insieme con l'endpoint ActorRef
che riceve il risultato finale. Ciò tuttavia crea un pacchetto molto ingombrante messages
con un messaggio diverso per ciascun attore. Per esempio. MobileForActor1
, Actor1ForMobile
, MobileForActor2
ecc Ora la mia domanda è: esiste una Convenzione da utilizzare per questo genere di cose che si occupa di questo problema ed è la mia struttura (Mobile
->Actor1
->Mobile
->Actor2
-.>, Ecc) il modo in cui Akka vuole che sia o devo fare una sorta di cascata dei messaggi (Mobile
->Actor1
->Actor2
-> ecc.)?
In questo momento sto inviando un ConnectMessage
alla mia Mobile
attore che poi lo invia a Actor1
, Actor1
elabora e invia un nuovo messaggio al Mobile
, Mobile
invia questa risposta poi a Actor2
e il ciclo continua con un nuovo messaggio essere creato in base al vecchio messaggio. Per esempio. new Message2(message1.foo, message1.bar, message1.baz, newComputatedResult, newComputatedResult2, etc);
Questa buona pratica o dovrei includere la vecchia istanza (che può contenere informazioni che non sono più utili) e includere le nuove cose? Per esempio. new Message2(message1, newComputatedResult, newComputatedResult2, etc);
Oppure devo fare qualcosa di completamente diverso?
Ho pensato di utilizzare TypedActors ma quelli richiedono l'utilizzo di un pattern a cascata e non so come passare l'ActorRef dell'ascoltatore che desidera ricevere il risultato finale.
Spero di essermi reso abbastanza comprensibile perché l'inglese non è la mia lingua di partenza e che la domanda è chiara per tutti.
Sono uno sviluppatore Akka di inizio e amo l'idea, ma dal momento che la documentazione non copre questo molto bene, ho pensato che questo sarebbe il posto migliore per chiedere. Grazie per aver letto!
Puoi mostrare alcuni esempi di buon naming dei messaggi? Ad esempio, ho un fornitore e un consumatore. Il consumatore desidera chiedere al fornitore quanti beni ha. Come chiameresti i messaggi per richiesta e per risposta? –
@TemaBolshakov - Che ne dici di "GetGoodsCountRequest" e "GetGoodsCountResponse"? –
non sono sicuro che questi nomi siano abbastanza idiomi in scala. Mi piace il primo, ma il dopo sembra un po 'ridondante. Potrebbe essere meglio rispondere con Int? O definire l'alias di tipo per Int, ad esempio 'type GoodsCount = Int'. Qual'è la migliore opzione in scala? –