2011-12-29 10 views
14

Sto usando Akka Actors e sto cercando di aggiornare il mio codice per utilizzare l'ultimo millesimo 2.0. L'API è cambiata, ad esempio la creazione di Actors ora funziona tramite qualcosa chiamato ActorSystem.Come avviare Akka Actors dal 2.0?

Anche gli attori di avvio e di arresto sono stati modificati - quest'ultimo è disponibile tramite i metodi ActorSystems.stop(..) e .shutdown(). Ma posso per la vita di me non capire come avviarli ... La documentazione è buona, ma sembra che manchino alcuni punti importanti. Mi sento un po 'stupido da chiedere, ma come si mettono gli attori nel tuo ambiente Akka 2.0? Se capisco correttamente, gli attori che hanno un "genitore" vengono avviati all'avvio di questo genitore - ma per quanto riguarda gli attori di primo livello?

risposta

26

In Akka 2.0, non è necessario un metodo start() perché gli attori vengono avviati non appena vengono istanziati nel contesto di un ActorSystem (o un altro Actor), ma è necessario istanziarli con uno di i metodi forniti di ActorSystem o di Actor.

Così, per esempio, se si dispone di un Actor sottoclasse chiamato MyClass, si potrebbe iniziare con:

val system = ActorSystem() 
val myActor = system.actorOf(Props[MyActor]) 

o, se il vostro attore ha preso argomenti del costruttore:

val myActor = system.actorOf(Props(new MyActor("arg1")) 

o, se eri nel corpo di un altro attore,

val myActor = context.actorOf(Props(new Actor("arg1")) 

e quindi il tuo attore potrebbe ricevere immediatamente messaggi, ad es.

myActor ! MyMessage 

Anche gli attori di livello superiore vengono avviati immediatamente, poiché tutti gli attori in 2.0 sono automaticamente in una gerarchia di supervisione. Non appena l'attore viene istanziato con lo ActorSystem, è pronto per ricevere messaggi.

+0

Oh, immagino sia stato facile per me capire ... * feelingstupid * Grazie :) – fgysin

+0

Nessun problema! Non è stata una domanda stupida - il nuovo comportamento si basa su due nuove funzionalità contemporaneamente (supervisione automatica e avvio automatico) che all'inizio è poco chiara se si è abituati all'API 1.2 o 1.3. Ma è più semplice una volta che ci sei abituato. –

Problemi correlati