BackgroundJob . enqueue (() -> System . out . println ( "This is all you need for distributed jobs!" ));
วิธีที่ง่ายอย่างไม่น่าเชื่อในการดำเนินการ แบบ fire-and-forget , ล่าช้า , กำหนดเวลา และ งานที่เกิดซ้ำ ภายใน แอปพลิเคชัน Java โดยใช้เฉพาะ Java 8 lambda's รองรับงานที่ใช้ CPU และ I/O จำนวนมาก งานที่ใช้ระยะเวลายาวนานและระยะสั้น พื้นที่จัดเก็บข้อมูลถาวรทำได้ผ่าน RDBMS (เช่น Postgres, MariaDB/MySQL, Oracle, SQL Server, DB2 และ SQLite) หรือ NoSQL (ElasticSearch, MongoDB และ Redis)
JobRunr มอบโมเดลการเขียนโปรแกรมแบบครบวงจรเพื่อจัดการงานเบื้องหลังด้วย วิธีที่เชื่อถือได้ และรันบนโฮสติ้งที่ใช้ร่วมกัน โฮสติ้งเฉพาะ หรือในระบบคลาวด์ (สวัสดี Kubernetes) ภายในอินสแตนซ์ JVM
ขอบคุณที่สร้าง JobRunr ฉันชอบมันมาก! ก่อนหน้านั้นฉันใช้ไลบรารีที่คล้ายกันใน Ruby และ Golang และ JobRunr จนถึงตอนนี้เป็นไลบรารีที่น่าใช้ที่สุด ฉันชอบแดชบอร์ดเป็นพิเศษ มันยอดเยี่ยมมาก! อเล็กซ์ เดนิซอฟ
ดูข้อเสนอแนะเพิ่มเติมเกี่ยวกับ jobrunr.io
สถานการณ์บางอย่างที่อาจเหมาะสม:
คุณสามารถเริ่มต้นเล็กๆ และประมวลผลงานภายในเว็บแอปของคุณ หรือปรับขนาดในแนวนอนและเพิ่มเซิร์ฟเวอร์งานเบื้องหลังได้มากเท่าที่คุณต้องการจัดการกับงานที่มีจุดสูงสุด JobRunr จะกระจายโหลดไปยังเซิร์ฟเวอร์ทั้งหมดให้กับคุณ JobRunr ทนทานต่อข้อผิดพลาดเช่นกัน - บริการเว็บภายนอกล่มหรือไม่ ไม่ต้องกังวล งานจะถูกลองใหม่โดยอัตโนมัติ 10 ครั้งด้วยนโยบายการสำรองข้อมูลอัจฉริยะ
JobRunr เป็นทางเลือก Java แทน HangFire, Resque, Sidekiq, Delayed_job, Celery และคล้ายกับ Quartz และ Spring Task Scheduler
ภารกิจไฟและลืม
เธรดพูลผู้ปฏิบัติงานเฉพาะจะรันงานพื้นหลังที่อยู่ในคิวโดยเร็วที่สุด ซึ่งจะทำให้เวลาในการประมวลผลคำขอของคุณสั้นลง
BackgroundJob . enqueue (() -> System . out . println ( "Simple!" ));
งานที่ล่าช้า
งานพื้นหลังตามกำหนดการจะดำเนินการหลังจากระยะเวลาที่กำหนดเท่านั้น
BackgroundJob . schedule ( Instant . now (). plusHours ( 5 ), () -> System . out . println ( "Reliable!" ));
งานที่เกิดซ้ำ
งานที่เกิดซ้ำไม่เคยง่ายกว่านี้มาก่อน เพียงเรียกวิธีการต่อไปนี้เพื่อทำงานประเภทใด ๆ ที่เกิดซ้ำโดยใช้นิพจน์ CRON
BackgroundJob . scheduleRecurrently ( "my-recurring-job" , Cron . daily (), () -> service . doWork ());
ประมวลผลงานเบื้องหลังภายในเว็บแอปพลิเคชัน...
คุณสามารถประมวลผลงานพื้นหลังในเว็บแอปพลิเคชันใดก็ได้ และเราได้รับการสนับสนุนอย่างละเอียดสำหรับ Spring - JobRunr มีความน่าเชื่อถือในการประมวลผลงานพื้นหลังของคุณภายในเว็บแอปพลิเคชัน
…หรือที่อื่นใด
เช่นเดียวกับแอปพลิเคชัน Spring Console ที่รวมอยู่ในคอนเทนเนอร์นักเทียบท่า ซึ่งทำงานอย่างต่อเนื่องตลอดไป และสำรวจสำหรับงานพื้นหลังใหม่
ดู https://www.jobrunr.io สำหรับข้อมูลเพิ่มเติม
JobRunr มีอยู่ใน Maven Central สิ่งที่คุณต้องทำคือเพิ่มการพึ่งพาต่อไปนี้:
< dependency >
< groupId >org.jobrunr</ groupId >
< artifactId >jobrunr</ artifactId >
< version >${jobrunr.version}</ version >
</ dependency >
เพียงเพิ่มการพึ่งพาให้กับ JobRunr:
implementation ' org.jobrunr:jobrunr:${jobrunr.version} '
เพิ่ม jobrunr-spring-boot-3-starter ลงในการพึ่งพาของคุณและคุณเกือบจะพร้อมแล้ว! เพียงตั้งค่า application.properties
ของคุณ :
# 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
กำหนด javax.sql.DataSource
และใส่โค้ดต่อไปนี้เมื่อเริ่มต้นระบบ:
@ 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 ();
}
}
ดูการมีส่วนร่วมสำหรับรายละเอียดในการส่งแพตช์และเวิร์กโฟลว์การสนับสนุน
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
จากนั้นในโปรเจ็กต์ของคุณเอง คุณสามารถพึ่งพา org.jobrunr:jobrunr:1.0.0-SNAPSHOT
ได้