2016-05-02 1 views
0

J'ai un acteur superviseur qui crée un couple d'acteurs enfants. J'ai également défini une stratégie de surveillance qui fait un traitement de OneToOne:Akka Acteur Redémarrage après un laps de temps

override val supervisorStrategy = 
    OneForOneStrategy() { 
     case _ => 
     logger.info("doing restart") 
     Restart 
    } 

Je voudrais savoir comment pourrais-je introduire un délai d'attente à ce redémarrage afin que je veux pour disons 5 secondes avant de redémarrer les enfants? Je ne vois aucune documentation Akka m'indiquant des délais d'attente configurables. Des indices? Je ne veux pas avoir Thread.sleep (...). C'est définitivement hors de l'équation. D'autres suggestions?

Répondre

1

Que diriez-vous redéfinissant la OneForOneStrategy avec les paramètres que:

OneForOneStrategy(maxNrOfRetries = 6, withinTimeRange = 1.minute) { 
    ... 
    ... 
} 

Cela permettrait d'assurer que les enfants acteurs sont redémarrés seulement 6 fois dans un intervalle de 1 minute!

+0

Cela tentera de redémarrer l'enfant N fois dans l'intervalle de temps. Les intervalles auxquels ces tentatives sont effectuées ne sont pas définis et l'intervalle de temps qui s'écoule avant la première tentative n'est pas défini. – nattyddubbs

0

Vous pouvez utiliser un backoff supervisor configuré avec une mise à zéro min et max égale les unes aux autres.

Notez qu'il existe deux types différents d'instances de backoff. Un pour onStop et un pour onFailure. Dans votre cas, j'utiliserais le onFailure car il s'agit du superviseur configuré pour gérer les cas d'exception.

+0

Le BackoffSupervisor redémarre l'enfant avec un délai croissant. Je n'aurais peut-être pas besoin de ça! Pourquoi ne pas substituer les paramètres maxNrOfRetries et withinTimeRange à OneForOneStrategy? Cela fait exactement ce que je veux! – sparkr

+0

Tout est basé sur la configuration. Si vous configurez le délai d'attente min et le délai d'attente maximal sont les mêmes, il attendra ce laps de temps avant de tenter de redémarrer l'enfant. – nattyddubbs