Wiederkehrende Jobs

Planen Sie wiederkehrende Jobs mit einer einzigen Codezeile unter Verwendung eines beliebigen CRON-Ausdrucks.

Das Registrieren eines wiederkehrenden Jobs ist genauso einfach wie das Registrieren eines Hintergrundjobs - Sie müssen nur eine einzige Codezeile schreiben:

BackgroundJob.scheduleRecurringly(() -> System.our.println("Einfach!"), Cron.daily());

Diese Zeile erstellt einen neuen wiederkehrenden Jobeintrag im StorageProvider. Eine spezielle Komponente in BackgroundJobServer überprüft die wiederkehrenden Jobs in einem minutenbasierten Intervall und stellt sie dann als Fire-and-Forget-Jobs in die Warteschlange. Auf diese Weise können Sie sie wie gewohnt verfolgen.

Anmerkung: Damit wiederkehrende Methoden funktionieren, sollte immer mindestens ein BackgroundJobServer ausgeführt werden

Die Cron-Klasse enthält verschiedene Methoden und Überladungen, um Jobs auf Minuten-, Stunden-, Tages-, Wochen-, Monats- und Jahresbasis auszuführen. Sie können auch Standard-CRON-Ausdrücke verwenden, um einen komplexeren Zeitplan anzugeben:

BackgroundJob.scheduleRecurringly(() -> System.our.println("Stark!"), "0 12 * */2");

Alle diese Methoden sind auch in der JobScheduler-Bean verfügbar:

@Inject
private JobScheduler jobScheduler;

jobScheduler.scheduleRecurringly(() -> System.our.println("Einfach!"), Cron.daily());

Bezeichner angeben

Jeder wiederkehrende Job hat eine eigene eindeutige Kennung. In den vorherigen Beispielen wurde es implizit unter Verwendung der Typ- und Methodennamen des angegebenen Aufrufausdrucks generiert (was zu System.out.println als Bezeichner führte). Die Klassen BackgroundJob und JobScheduler enthalten Überladungen, die eine explizit definierte Job-ID annehmen. Auf diese Weise können Sie später auf den Job verweisen.

BackgroundJob.scheduleRecurringly("some-id", 
  () -> System.our.println("Powerful!), "0 12 * */2");

Der Aufruf der Methode scheduleRecurringly erstellt einen neuen wiederkehrenden Job, wenn kein wiederkehrender Job mit dieser ID vorhanden ist, oder aktualisiert den vorhandenen Job mit dieser Kennung.

Id’s sollten eindeutig sein - verwenden Sie für jeden wiederkehrenden Job eindeutige Id’s, andernfalls beenden Sie mit einem einzelnen Auftrag.

Wiederkehrende Jobs bearbeiten

Sie können einen vorhandenen wiederkehrenden Job entfernen, indem Sie die Methode BackgroundJob.deleteRecurringly aufrufen. Es wird keine Ausnahme ausgelöst, wenn es keinen solchen wiederkehrenden Job gibt.