Il y a deux façons de le faire
réarmement manuel
Manipulez un message appelé reset
et re-initialiser tout l'état de l'acteur par vous-même manuellement.
Voici l'exemple de code qui gère le message de chaîne de réinitialisation et réinitialise l'état de l'acteur.
class FooActor extends Actor {
var maybeBars: Option[ActorRef] = _
def receive = {
case "foo" => println("foo")
case "reset" => maybeBars = _
}
}
Remise à zéro automatique
deuxième façon est de lancer une exception dans l'acteur et de tuer l'acteur. Dans ce cas, la stratégie de superviseur akka par défaut redémarrera l'acteur avec l'état vide initial.
class FooActor extends Actor {
var maybeBars: Option[ActorRef] = _
def receive = {
case "foo" => println("foo")
case "reset" => throw new Exception("reset")
}
}
Pourquoi ne pas utiliser 'become'? Il y a beaucoup d'exemples sur le net – zella