Spring Boot - harmonogram
Planowanie to proces wykonywania zadań w określonym przedziale czasu. Spring Boot zapewnia dobre wsparcie dla pisania harmonogramu w aplikacjach Spring.
Wyrażenie Java Cron
Wyrażenia Java Cron służą do konfigurowania instancji CronTrigger, podklasy org.quartz.Trigger. Aby uzyskać więcej informacji na temat wyrażenia cron w języku Java, możesz skorzystać z tego linku -
https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
Adnotacja @EnableScheduling służy do włączania harmonogramu dla Twojej aplikacji. Ta adnotacja powinna zostać dodana do głównego pliku klasy aplikacji Spring Boot.
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Adnotacja @Scheduled służy do wyzwalania harmonogramu na określony czas.
@Scheduled(cron = "0 * 9 * * ?")
public void cronJobSch() throws Exception {
}
Poniżej znajduje się przykładowy kod, który pokazuje, jak wykonywać zadanie co minutę, zaczynając o 9:00 i kończąc o 9:59, każdego dnia
package com.tutorialspoint.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class Scheduler {
@Scheduled(cron = "0 * 9 * * ?")
public void cronJobSch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Java cron job expression:: " + strDate);
}
}
Poniższy zrzut ekranu pokazuje, jak aplikacja została uruchomiona o godzinie 09:03:23 i co minutę od tego czasu zostało wykonane zadanie harmonogramu zadań cron.
Stała stawka
Harmonogram stałej stawki służy do wykonywania zadań w określonym czasie. Nie czeka na zakończenie poprzedniego zadania. Wartości powinny być w milisekundach. Przykładowy kod jest pokazany tutaj -
@Scheduled(fixedRate = 1000)
public void fixedRateSch() {
}
Przykładowy kod do wykonywania zadania co sekundę od uruchomienia aplikacji jest pokazany tutaj -
package com.tutorialspoint.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class Scheduler {
@Scheduled(fixedRate = 1000)
public void fixedRateSch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Fixed Rate scheduler:: " + strDate);
}
}
Zwróć uwagę na poniższy zrzut ekranu, który przedstawia aplikację, która została uruchomiona o godzinie 09:12:00, a następnie zostało wykonane co drugie zadanie harmonogramu o stałej szybkości.
Naprawiono opóźnienie
Harmonogram stałych opóźnień służy do wykonywania zadań w określonym czasie. Powinien zaczekać na zakończenie poprzedniego zadania. Wartości powinny być w milisekundach. Przykładowy kod jest pokazany tutaj -
@Scheduled(fixedDelay = 1000, initialDelay = 1000)
public void fixedDelaySch() {
}
Tutaj initialDelay to czas, po którym zadanie zostanie wykonane po raz pierwszy po początkowej wartości opóźnienia.
Przykład wykonania zadania co sekundę po 3 sekundach od uruchomienia aplikacji jest pokazany poniżej -
package com.tutorialspoint.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class Scheduler {
@Scheduled(fixedDelay = 1000, initialDelay = 3000)
public void fixedDelaySch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Fixed Delay scheduler:: " + strDate);
}
}
Zwróć uwagę na poniższy zrzut ekranu, który pokazuje aplikację, która została uruchomiona o godzinie 09:18:39 i co 3 sekundy, zadanie harmonogramu stałego opóźnienia było wykonywane co sekundę.