2011-12-29 13 views
14

Estoy usando Akka Actors y estoy tratando de actualizar mi código para usar el último jalón 2.0. El API cambió algo, por ejemplo, la creación de Actores ahora funciona a través de algo llamado ActorSystem.¿Cómo iniciar Akka Actors desde 2.0?

Los actores que comienzan y paran cambian también; este último está disponible a través de los métodos .stop(..) y .shutdown(). Pero puedo por mi vida no encontrar la manera de iniciarlos ... La documentación es buena, pero parece que falta algunos puntos importantes. Me siento un poco estúpido para preguntar, pero ¿cómo comienzas a los actores en tu entorno Akka 2.0? Si entendí correctamente, los actores que tienen un 'padre' se inician cuando se inicia este padre, pero ¿qué pasa con el (los) actor (es) de nivel superior?

Respuesta

26

En Akka 2.0, no hay necesidad de un método start() porque los actores se inician tan pronto como los crea en el contexto de ActorSystem (u otro Actor) - pero necesita crear una instancia de ellos con uno de los métodos proporcionados de ActorSystem o Actor 's context.

Así, por ejemplo, si tiene una subclase Actor llamada MyClass, usted podría comenzar con:

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

o, si tu actor tuvo argumentos de constructor:

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

o, si Estabas en el cuerpo de otro Actor,

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

y luego su actor podría recibir mensajes de inmediato, p.

myActor ! MyMessage 

Incluso los actores de nivel superior se inician inmediatamente, ya que todos los actores de 2.0 son automáticamente en una jerarquía de supervisión. Tan pronto como el actor se crea una instancia con el ActorSystem, está listo para recibir mensajes.

+0

Oh, creo que fue fácil para mí entender ... * feelingstupid * Gracias :) – fgysin

+0

¡No hay problema! No fue una pregunta estúpida en absoluto: el nuevo comportamiento se basa en dos nuevas características a la vez (supervisión automática y arranque automático), lo cual es confuso al principio si estás acostumbrado a la 1.2 o 1.3 API. Pero es más simple una vez que estás acostumbrado. –