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