Planen einer Aufgabe auf eine Feste Zeit des Tages mit Akka

Ich bin ein Anfänger mit Akka. Ich brauche eine Aufgabe planen, jeden Tag zu einem festen Zeitpunkt des Tages, sagen wir 8 UHR. Was ich weiß, wie zu tun ist, planen einer Aufgabe periodisch, zum Beispiel

import akka.util.duration._

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

Was ist die einfachste Möglichkeit zum planen von Aufgaben zu festen Zeiten des Tages in Akka?

Eine kleine Klammer

Ist es einfach zu tun, was ich will nur mit dieser Funktion. Ein Spielzeug Umsetzung Aussehen würde wie

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

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

Es ist nicht schwer, aber ich führte eine kleine race-Bedingung. In der Tat, betrachten Sie, was passiert, wenn ich starten kurz vor 8 UHR. Die externe Schließung wird gestartet, aber durch die Zeit, die ich berechnen delay wir können nach 8 Uhr. Dies bedeutet, dass der interne Verschluss - execute-rechten Weg - verschoben auf morgen, und damit das überspringen der Ausführung für einen Tag.

Gibt es Möglichkeiten, dieses Problem zu beheben race-Bedingung: für das Beispiel, ich könnte führen Sie die Prüfung alle 12 Stunden, und statt der Terminierung die Aufgabe sofort, indem er Sie an einen Schauspieler, nicht annehmen mehr als eine Aufgabe zu einer Zeit.

Aber wahrscheinlich, diese bereits im Akka oder einige extension.

InformationsquelleAutor der Frage Andrea | 2012-12-04

Schreibe einen Kommentar