BackgroundJob . enqueue (() -> System . out . println ( "This is all you need for distributed jobs!" ));
Cara yang sangat mudah untuk melakukan pekerjaan api-dan-lupakan , tertunda , terjadwal , dan berulang di dalam aplikasi Java hanya dengan menggunakan lambda Java 8 . Pekerjaan intensif CPU dan I/O, pekerjaan jangka panjang dan jangka pendek didukung. Penyimpanan persisten dilakukan melalui RDBMS (misalnya Postgres, MariaDB/MySQL, Oracle, SQL Server, DB2 dan SQLite) atau NoSQL (ElasticSearch, MongoDB dan Redis).
JobRunr menyediakan model pemrograman terpadu untuk menangani tugas-tugas latar belakang dengan cara yang andal dan menjalankannya di hosting bersama, hosting khusus, atau di cloud (halo Kubernetes) dalam instance JVM.
Terima kasih telah membangun JobRunr, saya sangat menyukainya! Sebelumnya saya menggunakan perpustakaan serupa di Ruby dan Golang dan sejauh ini JobRunr adalah yang paling nyaman untuk digunakan. Saya terutama menyukai dasbornya, luar biasa! Alex Denisov
Lihat masukan lebih lanjut di jobrunr.io.
Beberapa skenario yang mungkin cocok:
Anda dapat memulai dari yang kecil dan memproses pekerjaan dalam aplikasi web Anda atau menskalakannya secara horizontal dan menambahkan server pekerjaan latar belakang sebanyak yang Anda inginkan untuk menangani pekerjaan puncak. JobRunr akan mendistribusikan beban ke seluruh server untuk Anda. JobRunr juga toleran terhadap kesalahan - apakah layanan web eksternal tidak berfungsi? Jangan khawatir, pekerjaan tersebut secara otomatis dicoba ulang 10 kali dengan kebijakan back-off yang cerdas.
JobRunr adalah alternatif Java untuk HangFire, Resque, Sidekiq, Delayed_job, Celery dan mirip dengan Quartz dan Spring Task Scheduler.
Tugas api-dan-lupakan
Thread kumpulan pekerja khusus mengeksekusi pekerjaan latar belakang yang antri sesegera mungkin, sehingga mempersingkat waktu pemrosesan permintaan Anda.
BackgroundJob . enqueue (() -> System . out . println ( "Simple!" ));
Tugas tertunda
Pekerjaan latar belakang terjadwal dijalankan hanya setelah jangka waktu tertentu.
BackgroundJob . schedule ( Instant . now (). plusHours ( 5 ), () -> System . out . println ( "Reliable!" ));
Tugas berulang
Pekerjaan berulang tidak pernah semudah ini; panggil saja metode berikut untuk melakukan tugas berulang apa pun menggunakan ekspresi CRON.
BackgroundJob . scheduleRecurrently ( "my-recurring-job" , Cron . daily (), () -> service . doWork ());
Memproses tugas latar belakang di dalam aplikasi web…
Anda dapat memproses tugas latar belakang di aplikasi web apa pun dan kami memiliki dukungan menyeluruh untuk Spring - JobRunr dapat diandalkan untuk memproses pekerjaan latar belakang Anda dalam aplikasi web.
… atau di mana pun
Seperti Aplikasi Konsol Musim Semi, dibungkus dalam wadah buruh pelabuhan, yang terus berjalan selamanya dan melakukan polling untuk pekerjaan latar belakang baru.
Lihat https://www.jobrunr.io untuk info lebih lanjut.
JobRunr tersedia di Maven Central - yang perlu Anda lakukan hanyalah menambahkan ketergantungan berikut:
< dependency >
< groupId >org.jobrunr</ groupId >
< artifactId >jobrunr</ artifactId >
< version >${jobrunr.version}</ version >
</ dependency >
Cukup tambahkan ketergantungan ke JobRunr:
implementation ' org.jobrunr:jobrunr:${jobrunr.version} '
Tambahkan jobrunr-spring-boot-3-starter ke dependensi Anda dan Anda hampir siap berangkat! Cukup siapkan application.properties
Anda:
# 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
Tentukan javax.sql.DataSource
dan masukkan kode berikut saat startup:
@ 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 ();
}
}
Lihat BERKONTRIBUSI untuk rincian tentang pengiriman patch dan alur kerja kontribusi.
Good first issue
git 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
Kemudian, dalam proyek Anda sendiri, Anda dapat bergantung pada org.jobrunr:jobrunr:1.0.0-SNAPSHOT
.