Se creo un attore usando context(). ActorOf() in Akka, ottengo un ActorRef valido. Tuttavia, se faccio lo stesso, ma creo un ActorRef usando actorFor e il percorso che conosco a cui apparirà l'attore, non riesco a recuperare in modo affidabile un ActorRef valido. Come posso dire che un attore è stato registrato con successo?In Akka, come faccio a sapere quando un attore è pronto per l'uso dopo essere stato registrato con actorOf()?
Nella descrizione precedente, potrei semplicemente usare ActorRef restituito da actorOf(). Tuttavia, nel mio caso concreto creo un attore che registra un attore bambino e devo risolverlo, quindi il problema in generale è "come posso aspettare/registrarmi per essere informato di un attore che è stato registrato su un percorso noto? ".
Concordato sui due primi punti, l'attore potrebbe non esserci mai stato e potrebbe essere andato via prima che tu abbia la possibilità di usarlo. Per prima cosa, suppongo che quello che cerco veramente sia come avviare correttamente un sistema basato su attori. Dovrei chiedere() un attore che rappresenta un sottosistema utilizzando un messaggio di avvio per assicurarsi che sia esso e i suoi sottosistemi a turno siano pronti? – SoftMemes
Crea il tuo sistema come un grafico di attori. Quindi puoi usare una combinazione di DeathWatch e eventStream del sistema per pubblicare vivo/morto. Sarebbe interessante anche avere un LifeWatch. Ma il rischio è che perdi memoria se l'attore non viene mai in vita. –
quando si utilizza akka.testkit, si invia un messaggio all'attore immediatamente istanziato .. è necessario un modo per sapere che è pronto .. – KitAndKat