जावा टास्क शेड्यूलर: Quartz Scheduler — संपूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावा टास्क शेड्यूलर: Quartz Scheduler



जावा में आधुनिक डेवलपमेंट में अक्सर निर्धारित समय पर विशिष्ट कार्य करने की आवश्यकता होती है: ईमेल न्यूज़लेटर भेजना, लॉग्स का आर्काइवेशन, डेटा सिंक्रोनाइज़ेशन या रिपोर्ट जनरेशन। इन कार्यों को हल करने के लिए एक शक्तिशाली और लचीली लाइब्रेरी Quartz Scheduler मौजूद है। यह एक ओपन-सोर्स फ्रेमवर्क है जो ट्रिगर (Triggers) और cron-एक्सप्रेशन का उपयोग करके कार्यों (Jobs) को बनाने, शेड्यूल करने और प्रबंधित करने की अनुमति देता है। Quartz आसानी से Spring Boot, Java EE और किसी भी standalone-एप्लिकेशन के साथ एकीकृत हो जाता है।



Quartz की मुख्य क्षमताएँ

  • लचीला शेड्यूलिंग — सरल अंतराल (हर N सेकंड/मिनट) और जटिल cron-एक्सप्रेशन का समर्थन।
  • परसिस्टेंसी — एप्लिकेशन रीस्टार्ट के बाद पुनर्प्राप्ति के लिए डेटाबेस (JDBC JobStore) में कार्यों की स्थिति संग्रहीत करना।
  • क्लस्टरिंग — फॉल्ट टॉलरेंस के लिए कई नोड्स के बीच कार्यों का वितरण।
  • समानांतर निष्पादन — एक साथ कई कार्य चलाने की क्षमता।
  • छूटे हुए रन — डाउनटाइम के दौरान व्यवहार का कॉन्फ़िगरेशन (misfire instructions)।


इंस्टॉलेशन और कनेक्शन

Quartz का उपयोग करने के लिए pom.xml (Maven) में डिपेंडेंसी जोड़ें:

<dependency>    <groupId>org.quartz-scheduler</groupId>    <artifactId>quartz</artifactId>    <version>2.3.2</version></dependency>


Gradle के लिए:

implementation 'org.quartz-scheduler:quartz:2.3.2'


एक सरल कार्य बनाना

Quartz में प्रत्येक कार्य एक क्लास है जो Job इंटरफ़ेस को लागू करता है। execute() मेथड के अंदर बिज़नेस लॉजिक लिखा जाता है।

import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;

public class HelloJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("नमस्ते! कार्य " + new java.util.Date() + " पर निष्पादित हुआ"); }}


शेड्यूलर और ट्रिगर का कॉन्फ़िगरेशन

शेड्यूलर (Scheduler) StdSchedulerFactory फैक्ट्री के माध्यम से बनाया जाता है। फिर एक ट्रिगर बनाया जाता है — सरल (SimpleTrigger) या cron-आधारित (CronTrigger)।

import org.quartz.*;import org.quartz.impl.StdSchedulerFactory;

public class QuartzExample { public static void main(String[] args) throws SchedulerException { // 1. शेड्यूलर प्राप्त करें Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// 2. कार्य परिभाषित करें JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob", "group1") .build();

// 3. ट्रिगर बनाएँ — हर 10 सेकंड में चलाएँ Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build();

// 4. कार्य को ट्रिगर से बाँधें और शेड्यूलर शुरू करें scheduler.scheduleJob(job, trigger); scheduler.start(); }}


cron-एक्सप्रेशन का उपयोग

Cron-एक्सप्रेशन जटिल शेड्यूल सेट करने की अनुमति देते हैं। फॉर्मेट: सेकंड मिनट घंटे दिन-महीना महीना दिन-सप्ताह।

// हर दिन 18:30 पर चलाएँCronScheduleBuilder cronSchedule = CronScheduleBuilder        .dailyAtHourAndMinute(18, 30);

// या मैन्युअल: "0 30 18 * * ?" (हर दिन 18:30 पर)Trigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("cronTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedu

अनुशंसाएँ