BackgroundJob . enqueue (() -> System . out . println ( "This is all you need for distributed jobs!" ));
طريقة سهلة بشكل لا يصدق لتنفيذ مهام الإيقاف والنسيان والمتأخرة والمجدولة والمتكررة داخل تطبيقات Java باستخدام Java 8 lambda فقط. يتم دعم المهام المكثفة لوحدة المعالجة المركزية والإدخال/الإخراج وطويلة الأمد وقصيرة الأمد. يتم التخزين المستمر عبر 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، وlager_job، وCelery، وهو مشابه لبرنامج Quartz وSpring Task جدولة.
مهام "أطلق النار وانسى".
تقوم سلاسل عمليات تجمع العمال المخصصة بتنفيذ مهام الخلفية الموجودة في قائمة الانتظار في أسرع وقت ممكن، مما يؤدي إلى تقليل وقت معالجة طلبك.
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
.