14 votes

Comment démarrer les Acteurs Akka depuis 2.0 ?

Je suis en train d'utiliser Acteurs Akka et j'essaie de mettre à jour mon code pour utiliser la dernière version 2.0. La API a quelque peu changé, par exemple la création d'acteurs fonctionne maintenant via quelque chose appelé un ActorSystem.

Le démarrage et l'arrêt des acteurs ont également changé - ce dernier est disponible via les méthodes .stop(..) et .shutdown() des ActorSystems. Mais je n'arrive vraiment pas à comprendre comment les démarrer... La documentation est bonne, mais semble manquer quelques points importants. Je me sens un peu stupide de demander, mais comment démarrez-vous des acteurs dans votre environnement Akka 2.0? Si j'ai bien compris, les acteurs qui ont un 'parent' sont démarrés lorsque ce parent est démarré - mais qu'en est-il des acteurs de niveau supérieur?

26voto

Josh Marcus Points 765

Dans Akka 2.0, il n'est pas nécessaire d'avoir une méthode start() car les acteurs sont démarrés dès que vous les instanciez dans le contexte d'un ActorSystem (ou un autre Actor) -- mais vous devez les instancier avec l'une des méthodes fournies par ActorSystem ou le context d'un Actor.

Par exemple, si vous avez une sous-classe Actor appelée MyClass, vous pourriez la démarrer avec :

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

ou, si votre acteur prend des arguments de constructeur :

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

ou, si vous vous trouviez dans le corps d'un autre Actor,

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

et ensuite votre acteur pourrait immédiatement recevoir des messages, par exemple :

myActor ! MyMessage

Même vos acteurs de niveau supérieur sont démarrés immédiatement, car tous les acteurs en 2.0 sont automatiquement dans une hiérarchie de supervision. Dès que l'acteur est instancié avec l'ActorSystem, il est prêt à recevoir des messages.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X