जावा टास्क शेड्यूलर: क्वार्ट्ज शेड्यूलर — ऑटोमेशन के लिए एक शक्तिशाली उपकरण
आधुनिक जावा डेवलपमेंट में, अक्सर निर्धारित समय पर विशिष्ट क्रियाएं करने की आवश्यकता होती है: रिपोर्ट भेजना, कैश साफ करना, डेटा सिंक्रोनाइज़ करना या बैकग्राउंड प्रक्रियाएं शुरू करना। अंतर्निहित java.util.Timer और ScheduledExecutorService सरल परिदृश्यों के लिए उपयुक्त हैं, लेकिन जटिल कॉर्पोरेट सिस्टम के लिए अधिक लचीले और विश्वसनीय समाधान की आवश्यकता होती है। ऐसा समाधान है क्वार्ट्ज शेड्यूलर — जावा में टास्क शेड्यूल करने के लिए एक शक्तिशाली, ओपन-सोर्स लाइब्रेरी।
क्वार्ट्ज शेड्यूलर क्या है?
क्वार्ट्ज एक ओपन-सोर्स लाइब्रेरी है जो आपको उच्च सटीकता के साथ कार्य (Jobs) बनाने, शेड्यूल करने और निष्पादित करने की अनुमति देती है। यह समर्थन करती है:
- क्रॉन एक्सप्रेशन और सरल अंतराल पर आधारित लचीले ट्रिगर।
- डेटाबेस (JDBC) में कार्यों का स्थायी भंडारण।
- दोष सहनशीलता के लिए क्लस्टरिंग।
- समानांतर निष्पादन और थ्रेड प्रबंधन।
- निगरानी के लिए ईवेंट सुनना (Listeners)।
क्वार्ट्ज का स्प्रिंग फ्रेमवर्क (मॉड्यूल spring-boot-starter-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'क्वार्ट्ज के मुख्य घटक
यह समझने के लिए कि शेड्यूलर कैसे काम करता है, आइए इसके प्रमुख तत्वों को समझें:
- Job — एक इंटरफ़ेस जिसे आपका कार्य लागू करता है। इसमें
execute(JobExecutionContext context)विधि शामिल है। - JobDetail — कार्य का विवरण (नाम, समूह, डेटा)।
- Trigger — प्रारंभ नियम (समय, अंतराल, क्रॉन)।
- Scheduler — मुख्य घटक जो सभी कार्यों का प्रबंधन करता है।
उदाहरण: क्रॉन एक्सप्रेशन के साथ सरल शेड्यूलर
एक कार्य बनाएं जो हर 10 सेकंड में एक संदेश प्रिंट करता है।
चरण 1. Job को लागू करें
import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;
public class SimpleJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("कार्य पूर्ण हुआ! समय: " + System.currentTimeMillis()); }}चरण 2. Scheduler को कॉन्फ़िगर करें और चलाएं
import org.quartz.*;import org.quartz.impl.StdSchedulerFactory;
public class QuartzExample { public static void main(String[] args) throws SchedulerException { // 1. फ़ैक्टरी बनाएं और शेड्यूलर प्राप्त करें Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start();
// 2. JobDetail बनाएं JobDetail job = JobBuilder.newJob(SimpleJob.class) .withIdentity("myJob", "group1") .build();
// 3. क्रॉन एक्सप्रेशन के साथ ट्रिगर बनाएं (हर 10 सेकंड) Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")) .build();
// 4. कार्य शेड्यूल करें scheduler.scheduleJob(job, trigger);
// 5. प्रदर्शन के लिए 30 सेकंड प्रतीक्षा करें try { Thread.sleep(30000); } catch (InterruptedException e) { e.printStackTrace(); }
// 6. शेड्यूलर बंद करें schedule