BackgroundJob . enqueue (() -> System . out . println ( "This is all you need for distributed jobs!" ));
Unglaublich einfache Möglichkeit , Fire-and-Forget- , verzögerte , geplante und wiederkehrende Jobs in Java-Anwendungen auszuführen, indem nur Java 8-Lambdas verwendet werden. CPU- und I/O-intensive, lang- und kurzlaufende Jobs werden unterstützt. Die dauerhafte Speicherung erfolgt entweder über RDBMS (z. B. Postgres, MariaDB/MySQL, Oracle, SQL Server, DB2 und SQLite) oder NoSQL (ElasticSearch, MongoDB und Redis).
JobRunr bietet ein einheitliches Programmiermodell zur zuverlässigen Abwicklung von Hintergrundaufgaben und führt diese auf Shared Hosting, Dedicated Hosting oder in der Cloud (Hallo Kubernetes) innerhalb einer JVM-Instanz aus.
Danke, dass du JobRunr erstellt hast, es gefällt mir sehr gut! Davor habe ich ähnliche Bibliotheken in Ruby und Golang verwendet und JobRunr ist bisher die angenehmste zu verwenden. Besonders gut gefällt mir das Dashboard, es ist großartig! Alex Denisov
Weitere Rückmeldungen finden Sie auf jobrunr.io.
Einige Szenarien, in denen es gut passen könnte:
Sie können klein anfangen und Aufträge innerhalb Ihrer Web-App verarbeiten oder horizontal skalieren und so viele Hintergrund-Jobserver hinzufügen, wie Sie möchten, um eine Auftragsspitze zu bewältigen. JobRunr verteilt die Last für Sie auf alle Server. JobRunr ist außerdem fehlertolerant – ist ein externer Webdienst ausgefallen? Keine Sorge, der Auftrag wird mit einer intelligenten Backoff-Richtlinie automatisch zehnmal wiederholt.
JobRunr ist eine Java-Alternative zu HangFire, Resque, Sidekiq, verzögerter_job, Celery und ähnelt Quartz und Spring Task Scheduler.
Feuer-und-Vergessen-Aufgaben
Dedizierte Worker-Pool-Threads führen in der Warteschlange befindliche Hintergrundjobs so schnell wie möglich aus und verkürzen so die Bearbeitungszeit Ihrer Anfrage.
BackgroundJob . enqueue (() -> System . out . println ( "Simple!" ));
Verzögerte Aufgaben
Geplante Hintergrundjobs werden erst nach einer bestimmten Zeitspanne ausgeführt.
BackgroundJob . schedule ( Instant . now (). plusHours ( 5 ), () -> System . out . println ( "Reliable!" ));
Wiederkehrende Aufgaben
Wiederkehrende Aufträge waren noch nie einfacher; Rufen Sie einfach die folgende Methode auf, um jede Art von wiederkehrender Aufgabe mithilfe der CRON-Ausdrücke auszuführen.
BackgroundJob . scheduleRecurrently ( "my-recurring-job" , Cron . daily (), () -> service . doWork ());
Verarbeiten Sie Hintergrundaufgaben innerhalb einer Webanwendung…
Sie können Hintergrundaufgaben in jeder Webanwendung verarbeiten und wir bieten umfassende Unterstützung für Spring – JobRunr verarbeitet Ihre Hintergrundaufgaben zuverlässig innerhalb einer Webanwendung.
… oder woanders
Wie eine Spring Console-Anwendung, verpackt in einem Docker-Container, die ewig läuft und neue Hintergrundjobs abfragt.
Weitere Informationen finden Sie unter https://www.jobrunr.io.
JobRunr ist in Maven Central verfügbar – Sie müssen lediglich die folgende Abhängigkeit hinzufügen:
< dependency >
< groupId >org.jobrunr</ groupId >
< artifactId >jobrunr</ artifactId >
< version >${jobrunr.version}</ version >
</ dependency >
Fügen Sie einfach die Abhängigkeit zu JobRunr hinzu:
implementation ' org.jobrunr:jobrunr:${jobrunr.version} '
Fügen Sie den jobrunr-spring-boot-3-starter zu Ihren Abhängigkeiten hinzu und schon kann es losgehen! Richten Sie einfach Ihre application.properties
ein:
# the job-scheduler is enabled by default
# the background-job-server and dashboard are disabled by default
org.jobrunr.job-scheduler.enabled=true
org.jobrunr.background-job-server.enabled=true
org.jobrunr.dashboard.enabled=true
Definieren Sie eine javax.sql.DataSource
und fügen Sie beim Start den folgenden Code ein:
@ SpringBootApplication
public class JobRunrApplication {
public static void main ( String [] args ) {
SpringApplication . run ( JobRunrApplication . class , args );
}
@ Bean
public JobScheduler initJobRunr ( DataSource dataSource , JobActivator jobActivator ) {
return JobRunr . configure ()
. useJobActivator ( jobActivator )
. useStorageProvider ( SqlStorageProviderFactory
. using ( dataSource ))
. useBackgroundJobServer ()
. useDashboard ()
. initialize (). getJobScheduler ();
}
}
Weitere Informationen zum Einreichen von Patches und zum Beitragsworkflow finden Sie unter BEITRAG.
Good first issue
angit clone https://github.com/jobrunr/jobrunr.git
cd jobrunr
cd core/src/main/resources/org/jobrunr/dashboard/frontend
npm i
npm run build
cd -
./gradlew publishToMavenLocal
Dann können Sie sich in Ihrem eigenen Projekt auf org.jobrunr:jobrunr:1.0.0-SNAPSHOT
verlassen.