Planification d'une tâche à une heure fixe de la journée avec Akka

Je suis un débutant avec Akka. J'ai besoin de planifier une tâche chaque jour à heure fixe de la journée, disons 8H. Ce que je sais faire est de planifier une tâche périodique, par exemple

import akka.util.duration._

scheduler.schedule(0 seconds, 10 minutes) {
  doSomething()
}

Quelle est la façon la plus simple de planifier des tâches à heures fixes de la journée, dans Akka?

Une petite parenthèse

Il est facile de faire ce que je veux juste en utilisant cette fonctionnalité. Un jouet de la mise en œuvre pourrait ressembler

scheduler.schedule(0 seconds, 24 hours) {
  val now = computeTimeOfDay()
  val delay = desiredTime - now

  scheduler.scheduleOnce(delay) {
    doSomething()
  }
}

Il n'est pas difficile, mais j'ai introduit un peu de condition de course. En fait, considérez ce qui se passe si je me lance ce juste avant 8H du matin. Externes fermeture va commencer, mais par moment je calcule delay nous sommes peut-être après 8H. Cela signifie qu'à l'interne, fermeture - qui doit s'exécuter sur le champ, sera reportée à demain, en sautant ainsi l'exécution d'une journée.

Il y a des moyens de remédier à cette situation de concurrence: par exemple, j'ai pu effectuer la vérification toutes les 12 heures, et au lieu de la planification de la tâche tout de suite, l'envoyer à un acteur qui n'acceptera qu'une seule tâche à la fois.

Mais probablement, cela existe déjà dans d'Akka, ou une extension.

source d'informationauteur Andrea