Node.js में कार्य अनुसूचक: node-cron, node-schedule और Bull पुस्तकालयों का अवलोकन
आधुनिक Node.js वेब डेवलपमेंट में, अक्सर शेड्यूल या विलंब के साथ कोड निष्पादित करने की आवश्यकता होती है। चाहे वह ईमेल न्यूज़लेटर भेजना हो, कैश साफ़ करना हो, रिपोर्ट तैयार करना हो या डेटा सिंक्रोनाइज़ करना हो - एक विश्वसनीय कार्य अनुसूचक के बिना काम नहीं चल सकता। इस लेख में, हम तीन लोकप्रिय टूल्स पर चर्चा करेंगे: node-cron, node-schedule और Bull। आप उनकी विशेषताओं, उपयोग के उदाहरणों को जानेंगे और समझेंगे कि अपने कार्य के लिए कौन सा चुनना है।
1. node-cron — Node.js के लिए क्लासिक Cron
node-cron एक न्यूनतम पुस्तकालय है जो Unix शेड्यूलर cron के सिंटैक्स को लागू करता है। यह सरल आवर्ती कार्यों के लिए एकदम सही है।
स्थापना
npm install node-cronउदाहरण: हर मिनट निष्पादित होने वाला कार्य
const cron = require('node-cron');
cron.schedule('* * * * *', () => { console.log('कार्य हर मिनट निष्पादित होता है');});cron-अभिव्यक्ति का प्रारूप
अभिव्यक्ति में 5 फ़ील्ड होते हैं:
सेकंड (0-59, वैकल्पिक)मिनट (0-59)घंटा (0-23)महीने का दिन (1-31)महीना (1-12)सप्ताह का दिन (0-7, 0 और 7 = रविवार)
उन्नत उदाहरण: प्रतिदिन सुबह 8:30 बजे
cron.schedule('30 8 * * *', () => { // सुबह के आँकड़े भेजना sendMorningReport();});विशेषताएँ
timezoneविकल्प के माध्यम से समय क्षेत्रों का समर्थन- कार्यों को शुरू और रोकने की क्षमता
- हल्का वजन (~20 KB)
- कतारों के साथ जटिल तर्क के लिए उपयुक्त नहीं
2. node-schedule — आवर्ती नियमों के साथ लचीला अनुसूचक
node-schedule एक अधिक समृद्ध API प्रदान करता है: आप केवल cron-स्ट्रिंग के बजाय ऑब्जेक्ट के माध्यम से शेड्यूल सेट कर सकते हैं। यह जटिल परिदृश्यों के लिए सुविधाजनक है (जैसे, "महीने के हर दूसरे मंगलवार को 15:00 बजे")।
स्थापना
npm install node-scheduleउदाहरण: cron-अभिव्यक्ति द्वारा कार्य
const schedule = require('node-schedule');
const job = schedule.scheduleJob('*/5 * * * *', () => { console.log('हर 5 मिनट में प्रारंभ');});उदाहरण: ऑब्जेक्ट के माध्यम से आवर्ती नियम
const rule = new schedule.RecurrenceRule();rule.dayOfWeek = [1, 3, 5]; // सोम, बुध, शुक्रrule.hour = 10;rule.minute = 30;
schedule.scheduleJob(rule, () => { console.log('कार्यदिवसों पर 10:30 बजे कार्य');});उदाहरण: विलंबित प्रारंभ
const date = new Date(Date.now() + 5000); // 5 सेकंड बादschedule.scheduleJob(date, () => { console.log('5 सेकंड बाद एक बार का कार्य');});विशेषताएँ
- नियमों का लचीला निर्धारण (सप्ताह के दिन, महीने, श्रेणियाँ)
- तिथि के अनुसार एक बार के कार्यों का समर्थन
- कार्य रद्द करने की क्षमता:
job.cancel() - क्लस्टरीकरण और कतारों का समर्थन नहीं करता
3. Bull — अनुसूचक और पुनरावृत्तियों के साथ शक्तिशाली कतार
Bull केवल एक अनुसूचक नहीं है, बल्कि Redis पर आधारित एक पूर्ण कतार प्रणाली है। यह उत्पादन वातावरण के लिए आदर्श है: विलंबित कार्यों, त्रुटियों पर पुनरावृत्तियों, प्राथमिकताओं और समानांतर प्रसंस्करण का समर्थन करता है।
स्थापना
npm install bull# Redis स्थापित होना आवश्यक हैउदाहरण: विलंब के साथ सरल कार्य
const Queue = require('bull');const myQueue = new Queue('myQueue', 'redis://127.0.0.1:6379');
// 1 घंटे की विलंब के साथ कार्य जोड़ेंmyQueue.add({ email: 'user@example.com' }, { delay: 3600000 });
// हैंडलरmyQueue.process(async (job) => { console.log(`${job.data.email} के लिए ईमेल भेजा जा रहा है`); await sendEmail(job पुस्तकालय में भी
Rust में CSV के साथ काम करना: csv, serde लाइब्रेरीज़ और डेटा का कुशल प्रसंस्करण
TypeScript में Excel के साथ काम करना: लाइब्रेरीज़, उदाहरण और उपकरण
C++ में YAML के साथ काम करें: yaml-cpp और rapidyaml लाइब्रेरी
Swift में PDF रिपोर्ट जनरेशन: PDFKit और UIPrintPageRenderer
स्विफ्ट ऐप कॉन्फ़िगरेशन: iOS/macOS के लिए उपकरण और लाइब्रेरीज़