2013-03-04 20 views
6

Esiste un modo elegante per eseguire un riavvio forzato di un attore, ovvero eliminare la cassetta postale insieme allo stato interno?Direttiva riavvio hardware in Akka?

So che si può fare chiamando context.stop e reinizializzando sul messaggio DeathWatch/Terminated, ma questo è un po 'goffo.

risposta

5

No, cancellare la cassetta postale è esattamente ciò che viene fatto terminando l'attore. Se dovessi provare questo senza la semantica della terminazione, come potresti mai essere sicuro di aver eliminato tutto? Nuovi messaggi potrebbero arrivare in qualsiasi momento.

Così, per fare così difficile il riavvio si

  • ritorno della direttiva Stop dalla strategia supervisore
  • quindi creare un nuovo bambino, una volta si riceve Terminated messaggio che dell'attore.