Geplante Aufgaben (Scheduled Tasks) in Java/Spring

Wie unter Linux der cron-Befehl oder unter Windows die geplanten Tasks bietet auch Spring eine einfache Möglichkeit, um regelmäßig auszuführende Methoden zu erstellen. Dies geschieht mit der @Scheduled Annotation.

Voraussetzung für eine @Scheduled Methode

  • die Methode sollte einen void-Rückgabewert haben
  • die Methode sollte keine Parameter erwarten

Damit Spring das Scheduled-Feature unterstützt, muss es in einer Konfiguration mit der @EnableScheduling-Annotation eingeschalten werden:

@Configuration
@EnableScheduling
public class MyConfig {
   ..
}Code-Sprache: PHP (php)

Dann hat man verschiedene Möglichkeiten, das Intervall der geplanten Aufgaben über die @Scheduled-Annotation zu konfigurieren:

Fixed delay

Mit fixed delay kann man ein Zeitintervall in Millisekunden einstellen welches nach dem Beenden der Methode gewartet wird. D.h. es läuft immer nur max. ein Task gleichzeitig.

Bsp.:

@Scheduled(fixedDelay = 500)
public void scheduledTask() {

    ...
}Code-Sprache: CSS (css)

Fixed rate

Mit der fixed rate Einstellung wird die Aufgabe immer nach dem angegebenen Zeitintervall gestartet, unabhängig ob der vorherige Aufruf schon beendet wurde. Es kann hier also zu parallelen Ausführungen kommen.

Bsp.:

@Scheduled(fixedRate = 1000)
public void scheduleTask() {
    ...
}Code-Sprache: CSS (css)

Cron

Mit der cron-Option kann man den Aufruf ähnlich wie mit der cron-Konfiguration gestalten. Im Unterschied zu cron kann man hier aber auch die Sekunden einstellen.

Syntax: second | minute | hour | day of month (1-31) | month (1-12) | day of week (0-6, Sunday to Saturday)

Bsp.:

@Scheduled(cron = "0 0 2 * * *")		// jeden Tag um 2 in der Früh
public void scheduledTask1() {
	...
}

@Scheduled(cron = "0 */10 * * * *") 		// alle 10 Minuten	
public void scheduledTask2() {
	...
}Code-Sprache: JavaScript (javascript)

Schreibe einen Kommentar