217 votes

Akka Kill vs Stop vs pilule empoisonnée ?

Newbie question d’Akka - je lis sur Akka Essentials, quelqu'un pourrait s’il vous plaît m’expliquer la différence entre Akka Stop/Poison Pill vs tuer ? Le livre offre juste une petite explication « Kill est synchrone vs pilule empoisonnée est asynchrone. » Mais de quelle manière ? Se bloque le thread appelant d’acteur pendant ce temps ? Sont les enfants acteurs, notifiées au cours de la tuer, lancée après arrête, etc ? Montre comment utiliser un concept par rapport à l’autre ?

Merci beaucoup !

337voto

rs_atl Points 4057

Les deux stop et PoisonPill mettra fin à l'acteur et à arrêter la file d'attente de messages. Ils seront la cause de l'acteur de cesser le traitement de messages, d'envoyer un arrêt d'appel à tous ses enfants, attendre pour eux de mettre fin, puis d'appeler sa postStop crochet. Tous les autres messages sont envoyés à la mort de lettres boîte aux lettres.

La différence est dans lequel les messages sont traitées avant cette séquence commence. Dans le cas de l' stop appel, le message en cours de traitement est terminé le premier, avec tous les autres éliminés. Lors de l'envoi d'un PoisonPill, c'est tout simplement un autre message dans la file d'attente, de sorte que la séquence démarre lorsque l' PoisonPill est reçu. Tous les messages qui sont devant lui dans la file d'attente sera traitée en premier.

En revanche, l' Kill message provoque l'acteur de jeter un ActorKilledException qui est prise en charge à l'aide de la normale superviseur mécanisme. Ainsi, le comportement dépend de ce que vous avez définies dans votre superviseur de la stratégie. La valeur par défaut est de cesser de l'acteur. Mais la boîte aux lettres persiste, donc, quand l'acteur redémarre, il aura encore le vieux messages, à l'exception de celui qui a provoqué l'échec.

Voir aussi la "Arrêt d'un Acteur", de "mise à mort d'un Acteur" de la section " docs:

http://doc.akka.io/docs/akka/snapshot/scala/actors.html

Et de plus sur les stratégies de surveillance:

http://doc.akka.io/docs/akka/snapshot/scala/fault-tolerance.html

0voto

idonnie Points 1219

PoisonPill cesse de façon asynchrone l’acteur après que c’est fait avec tous les messages qui ont été reçus dans la boîte aux lettres, avant PoisonPill.

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