2012-02-20 13 views
5

En Akka 2.0, ¿hay alguna manera de cerrar a todos los actores en la ruta/usuario? Por ejemplo, digamos que hago lo siguiente:detener a todos los actores en un sistema sin apagar el sistema en sí?

val system = ActorSystem.create("mySystem") 

system.actorOf(Props(new MyActor1), "actor1") 
system.actorOf(Props(new MyActor2), "actor2") 

Algún tiempo más tarde, decido que quiero para detener todos los actores en el sistema. Si entiendo las cosas correctamente, actor1 y actor2 serán hijos de la ruta/usuario, pero no veo un método que me proporcione un iterable de los hijos de un ActorRef. ¿Hay otra manera?

+4

Es posible que no desee crear una gran cantidad de actores bajo la raíz directamente, ya que crea un árbol muy superficial pero ancha. Crear un nivel primero, y luego PoisonPill ese? –

+0

Originalmente pensé que esto no se aplicaba a mi problema, pero después de más consideración, creo que otra capa de actores podría estar en orden. Básicamente estoy administrando conexiones para un servicio, y las conexiones se cuelgan directamente del sistema actor. Creo que agregaré soporte para un contenedor de conexión. ¡Gracias! – jxstanford

+0

De nada :-) –

Respuesta

12

Utilice una selección de actor para enviar un PoisonPill a todos los actores de nivel superior:

system.actorSelection("/user/*") ! PoisonPill 
Cuestiones relacionadas