Fließende API
Verwenden Sie die Fließende API, um JobRunr in Ihrer Anwendung innerhalb von Minuten zu konfigurieren.
Einreihen und Verarbeiten in derselben JVM-Instanz
JobRunr kann mithilfe der Fluent-API einfach konfiguriert werden, um Jobs in derselben Anwendung in die Warteschlange zu stellen und zu verarbeiten:
@SpringBootApplication
@Import(JobRunrStorageConfiguration.class)
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
@Bean
public JobScheduler initJobRunr(ApplicationContext applicationContext) {
return JobRunr.configure()
.useJobActivator(applicationContext::getBean)
.useStorageProvider(SqlStorageProviderFactory
.using(applicationContext.getBean(DataSource.class)))
.useBackgroundJobServer()
.useJmxExtensions()
.useDashboard()
.initialize();
}
}
Was geschieht hier:
- Zuerst wird eine Spring-Anwendung erstellt. Dies kann entweder eine CommandLineRunner-Anwendung oder eine WebApplication sein
- Die wichtige Methode hier ist die initJobRunr-Methode:
- Die Fluent-API wird mit JobRunr.configure () gestartet.
- Danach wird ein StorageProvider mit einer DataSource erstellt, die in der Spring-Konfigurationsklasse JobRunrStorageConfiguration definiert ist.
- Es wird ein JobActivator definiert, der die getBean-Methode des Spring ApplicationContext verwendet
- Der
BackgroundJobServer
selbst wird gestartet JmxExtensions
are enabled- und das Dashboard wird ebenfalls gestartet
In diesem Setup stellt die Anwendung neue Hintergrundjobs in die Warteschlange und verarbeitet sie auch aufgrund der aufgerufenen Methode useBackgroundJobServer
.
Enqueueing und Verarbeitung in verschiedenen JVM-Instanzen
Im folgenden Setup plant die Anwendung, die Hintergrundjobs in die Warteschlange stellt, typisch für die Webanwendung, nur neue Jobs und verarbeitet keine Hintergrundjobs.
Hintergrundjobs Einreihen:
Um Hintergrundjobs in die Warteschlange zu stellen, wird die Konfiguration erneut mithilfe der Fluent-API durchgeführt:
@SpringBootApplication
@Import(JobRunrStorageConfiguration.class)
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
@Bean
public JobScheduler initJobRunr(ApplicationContext applicationContext) {
return JobRunr.configure()
.useStorageProvider(SqlStorageProviderFactory
.using(applicationContext.getBean(DataSource.class)))
.initialize();
}
}
Was geschieht hier:
- Zuerst wird eine Spring-Anwendung erstellt, in diesem Fall eine Spring-Webanwendung
- Die wichtige Methode hier ist wieder die initJobRunr-Methode:
- Die Fluent-API wird mit JobRunr.configure () gestartet.
- Danach wird ein StorageProvider mit einer DataSource erstellt, die in der Spring-Konfigurationsklasse JobRunrStorageConfiguration definiert ist.
- Die Fluent-API wird mit dem Methodenaufruf initialize beendet, der einen JobScheduler zurückgibt.
Sie können die JobScheduler-Bean in Klassen, in denen Sie Hintergrundjobs in die Warteschlange stellen möchten, automatisch verdrahten oder die statischen Methoden für BackgroundJob verwenden.
Hintergrundjobs verarbeiten:
In der Anwendung, die Hintergrundjobs verarbeitet (dies kann eine Spring-Commandline-Runner-Anwendung sein, die mit Jib in einem Docker-Container gepackt ist), wird die Fluent-API erneut verwendet und spricht für sich selbst:
@SpringBootApplication
@Import(JobRunrStorageConfiguration.class)
public class JobServerApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(JobServerApplication.class, args);
}
@Override
public void run(String... args) throws InterruptedException {
Thread.currentThread().join();
}
@Bean
public JobScheduler initJobRunr(ApplicationContext applicationContext) {
return JobRunr.configure()
.useJobActivator(applicationContext::getBean)
.useStorageProvider(SqlStorageProviderFactory
.using(applicationContext.getBean(DataSource.class)))
.useBackgroundJobServer()
.useDashboard()
.initialize();
}
}
Was geschieht hier:
- Zuerst wird eine Spring-Anwendung erstellt, in diesem Fall eine Spring-Befehlszeilenanwendung
- Die wichtige Methode hier ist wieder die
initJobRunr
Methode:- Die Fluent-API wird mit JobRunr.configure () gestartet.
- Danach wird ein StorageProvider mit einer DataSource erstellt, die in der Spring-Konfigurationsklasse JobRunrStorageConfiguration definiert ist.
- Es wird ein JobActivator definiert, der die getBean-Methode des Spring ApplicationContext verwendet
- Der “BackgroundJobServer” selbst wird mit der “useBackgroundJobServer” -Methode gestartet
- Das Dashboard wird ebenfalls gestartet
Erweiterte Konfiguration
Mit der JobRunr-Konfiguration können Sie JobRunr vollständig nach Ihren Wünschen einrichten:
boolean isBackgroundJobServerEnabled = true; // or get it via ENV variables
boolean isDashboardEnabled = true; // or get it via ENV variables
JobRunr.configure()
.useJobActivator(jobActivator)
.useJobStorageProvider(jobStorageProvider)
.withJobFilter(new RetryFilter(2)) // only do two retries by default
.useBackgroundJobServerIf(isBackgroundJobServerEnabled, 4) // only use 4 worker threads
.useDashboardIf(isDashboardEnabled, 80) // start on port 80 instead of 8000
.useJmxExtensions()
.initialize();
Weitere Optionen finden Sie im JobRunr JavaDoc.