2016-01-28 5 views
14

Ich bin derzeit in der Entwicklung einer Anwendung basierend auf Spring-Boot.Was ist der beste Weg, um Task in Spring-Boot-Anwendung zu planen

Ich weiß, dass Annotation wie @Scheduled Aufgaben planen kann. Da Benutzer in meiner Anwendung E-Mails zu unterschiedlichen Zeiten senden und nur einmal senden möchten.

Ich habe bereits den Beitrag Spring scheduling task - run only once, gelesen, aber es ist seltsam, immer "neu" ein localExecutor in einer Spring-basierten Anwendung.

Auf diese Weise, sobald ein Benutzer planen, eine E-Mail senden, muss ich einen lokalenExecutor für seine Aufgabe "neu".

Gibt es also bessere Möglichkeiten?

Antwort

12

Die einfachste Möglichkeit zum Planen von Tasks im Frühling ist das Erstellen einer Methode, die im Frühling von Bean Bean mit @Scheduled gekennzeichnet ist. Es erforderte auch @EnableScheduling in irgendwelchen Klassen.

Spring tutorial

+0

ja, ich habe bereits diese Art von Anmerkungen für die Planung Aufgabe verwenden. Aber in meinem Zustand möchte ein Benutzer seine Post nur einmal zu einer gegebenen Zeit senden. Also, wenn ich die @Schedule-Annotation verwende, muss ich "polling" prüfen, ob eine Mail alle paar Minuten oder Stunden gesendet werden soll ... – Exia

+0

Hope [this] (http://stackoverflow.com/questions/17402112/ correct-to-persist-quartz-trigger-in-database) kann für Sie hilfreich sein –

+0

Thx. Ich werde Quartz dann versuchen .. – Exia

8

Sie crontab innerhalb @Scheduled können

private AtomicInteger counter = new AtomicInteger(0); 

@Scheduled(cron = "*/2 * * * * *") 
public void cronJob() { 
    int jobId = counter.incrementAndGet(); 
    System.out.println("Job " + new Date() + ", jobId: " + jobId); 
} 
Verwandte Themen