जावा टास्क शेड्यूलर: Quartz Scheduler
\n\nजावा में आधुनिक डेवलपमेंट में अक्सर शेड्यूल के अनुसार कोड निष्पादित करने की आवश्यकता होती है: ईमेल न्यूज़लेटर भेजना, कैश साफ़ करना, रिपोर्ट जनरेट करना या डेटा सिंक्रोनाइज़ करना। इन उद्देश्यों के लिए एक शक्तिशाली लाइब्रेरी Quartz Scheduler मौजूद है — जो जावा इकोसिस्टम में टास्क शेड्यूलिंग का डी-फैक्टो मानक है।
\n\nQuartz Scheduler एक open-source फ्रेमवर्क है जो आपको लचीली ट्रिगर प्रणाली के साथ टास्क (Jobs) बनाने, शेड्यूल करने और प्रबंधित करने की अनुमति देता है। यह सरल विलंब से लेकर जटिल cron-शेड्यूल तक का समर्थन करता है, विफलताओं के प्रति लचीला है, और इसे Spring Boot, Jakarta EE और अन्य प्लेटफार्मों के साथ एकीकृत किया जा सकता है।
\n\nमुख्य विशेषताएं
\n- \n
- लचीला शेड्यूलिंग — विलंब और पुनरावृत्ति के साथ सरल ट्रिगर (SimpleTrigger) और जटिल शेड्यूल के लिए cron-ट्रिगर (CronTrigger) का समर्थन। \n
- परसिस्टेंसी — टास्क और ट्रिगर डेटाबेस (JDBC JobStore) में संग्रहीत किए जा सकते हैं, जो एप्लिकेशन के पुनरारंभ के बाद भी निष्पादन सुनिश्चित करता है। \n
- क्लस्टरिंग — डेटाबेस के माध्यम से समन्वय के साथ शेड्यूलर के कई इंस्टेंस चलाने की क्षमता। \n
- Listeners — लॉगिंग या अतिरिक्त प्रोसेसिंग के लिए टास्क निष्पादन ईवेंट (JobListener, TriggerListener) को सुनना। \n
- मॉनिटरिंग — वर्तमान टास्क, उनकी स्थिति और निष्पादन इतिहास देखने के लिए अंतर्निहित API। \n
इंस्टॉलेशन और सेटअप
\nशुरू करने के लिए, अपने pom.xml (Maven) में डिपेंडेंसी जोड़ें:
<dependency>\n <groupId>org.quartz-scheduler</groupId>\n <artifactId>quartz</artifactId>\n <version>2.3.2</version>\n</dependency>\nGradle के लिए:
\nimplementation 'org.quartz-scheduler:quartz:2.3.2'\n\nसरल टास्क बनाने का उदाहरण
\nएक क्लास बनाएं जो Job इंटरफ़ेस को लागू करता है। यही हमारा टास्क है:
import org.quartz.Job;\nimport org.quartz.JobExecutionContext;\nimport org.quartz.JobExecutionException;\nimport java.time.LocalTime;\n\npublic class SimpleJob implements Job {\n @Override\n public void execute(JobExecutionContext context) throws JobExecutionException {\n System.out.println("टास्क निष्पादित हुआ: " + LocalTime.now());\n // यहाँ आपका बिज़नेस कोड\n }\n}\n\nSimpleTrigger के साथ टास्क शेड्यूल करना
\nटास्क को 5 सेकंड बाद शुरू करें और हर 10 सेकंड में दोहराएं:
\nimport org.quartz.*;\nimport org.quartz.impl.StdSchedulerFactory;\n\npublic class SimpleSchedulerExample {\n public static void main(String[] args) throws SchedulerException {\n // 1. शेड्यूलर बनाएं\n Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();\n\n // 2. टास्क (JobDetail) परिभाषित करें\n JobDetail job = JobBuilder.newJob(SimpleJob.class)\n .withIdentity("myJob", "group1")\n .build();\n\n // 3. ट्रिगर बनाएं: 5 सेकंड बाद शुरू, हर 10 सेकंड में दोहराएं\n Trigger trigger = TriggerBuilder.newTrigger()\n .withIdentity("myTrigger", "group1")\n .startAt(DateBuilder.futureDate(5, DateBuilder.IntervalUnit.SECOND))\n .withSchedule(SimpleScheduleBuilder.simpleSchedule()\n .withIntervalInSeconds(10)\n .repeatForever())\n .build();\n\n // 4. टास्क को ट्रिगर से जोड़ें और शुरू करें\n scheduler.scheduleJob(job, trigger);\n scheduler.start();\n }\n}\n\nजटिल शेड्यूल के लिए CronTrigger का उपयोग
\nCron-एक्सप्रेशन किसी भी जटिलता का शेड्यूल सेट करने की अनुमति देते हैं। उदाहरण के लिए, हर दिन सुबह 9:30 बजे:
\nTrigger cronTrigger = TriggerBuilder.newTrigger()\n .withIdentity("cronTrigger", "group1")\n