जावास्क्रिप्ट (Node.js) के लिए कार्य कतारें: Bull, Bee-Queue और Kue
आधुनिक Node.js वेब अनुप्रयोगों में, अनुरोध प्रसंस्करण के मुख्य थ्रेड को अवरुद्ध किए बिना, लंबी या संसाधन-गहन संचालन को एसिंक्रोनस रूप से निष्पादित करने की आवश्यकता अक्सर उत्पन्न होती है। इसके लिए कार्य कतारों (job queues) का उपयोग किया जाता है। वे कार्य के निष्पादन को स्थगित करने, कई प्रक्रियाओं के बीच भार वितरित करने और त्रुटियों के मामले में पुन: प्रसंस्करण सुनिश्चित करने की अनुमति देते हैं।
इस लेख में, हम Node.js में कार्य कतारों के साथ काम करने के लिए तीन लोकप्रिय लाइब्रेरीज़ पर विचार करेंगे: Bull, Bee-Queue और Kue। ये सभी संदेश ब्रोकर के रूप में Redis का उपयोग करते हैं, जो उच्च प्रदर्शन और विश्वसनीयता सुनिश्चित करता है।
1. Bull — सबसे लोकप्रिय और कार्यात्मक लाइब्रेरी
Bull Node.js के लिए एक आधुनिक, तेज़ और विश्वसनीय कार्य कतार है, जो Redis पर बनी है। यह सभी प्रमुख सुविधाओं का समर्थन करती है: विलंबित कार्य, पुन: प्रयास, प्राथमिकताएँ, रुकना/फिर से शुरू करना, साथ ही अंतर्निहित UI के माध्यम से निगरानी।
स्थापना
npm install bullमूल उदाहरण
const Queue = require('bull');
// कतार बनाएँconst emailQueue = new Queue('email', 'redis://127.0.0.1:6379');
// कार्य हैंडलरemailQueue.process(async (job) => { const { to, subject } = job.data; console.log(`को ${to} पर ईमेल भेजा जा रहा है: ${subject}`); // भेजने का अनुकरण await new Promise(resolve => setTimeout(resolve, 1000)); return { success: true };});
// कार्य जोड़नाemailQueue.add({ to: 'user@example.com', subject: 'Bull से नमस्ते!'}, { attempts: 3, // त्रुटि पर 3 बार दोहराएँ delay: 5000, // 5 सेकंड के लिए विलंब priority: 1 // उच्च प्राथमिकता});Bull की मुख्य क्षमताएँ
- पुन: प्रयास — कॉन्फ़िगर करने योग्य विलंब के साथ विफलताओं पर स्वचालित पुनरावृत्ति।
- प्राथमिकताएँ — उच्च प्राथमिकता वाले कार्य पहले संसाधित होते हैं।
- विलंबित कार्य — निष्पादन से पहले विलंब निर्धारित किया जा सकता है।
- रुकना और फिर से शुरू करना — रखरखाव के लिए कतार को रोकना।
- निगरानी — अंतर्निहित वेब इंटरफ़ेस
bull-board। - ईवेंट — ईवेंट्स की सदस्यता (completed, failed, progress)।
ईवेंट के साथ उन्नत उदाहरण
const Queue = require('bull');const myQueue = new Queue('myQueue');
myQueue.on('completed', (job, result) => { console.log(`कार्य ${job.id} पूर्ण हुआ:`, result);});
myQueue.on('failed', (job, err) => { console.error(`कार्य ${job.id} विफल हुआ: ${err.message}`);});
myQueue.process(async (job) => { // प्रगति await job.progress(50); // निष्पादन return { status: 'ok' };});Bull उन परियोजनाओं के लिए अनुशंसित है जहाँ अधिकतम लचीलापन और निगरानी के लिए तैयार उपकरणों की आवश्यकता होती है।
2. Bee-Queue — हल्का और तेज़ विकल्प
Bee-Queue एक न्यूनतम कार्य कतार है, जो प्रदर्शन पर केंद्रित है। यह Bull की तुलना में सरल है, लेकिन फिर भी सभी बुनियादी क्षमताएँ प्रदान करती है: विलंबित कार्य, पुनरावृत्ति, प्राथमिकताएँ और स्केलिंग।
स्थापना
npm install bee-queueउपयोग का उदाहरण
const Queue = require('bee-queue');
const imageQueue = new Queue('images', { redis: { host: '127.0.0.1', port: 6379 }});
// हैंडलरimageQueue.process(async (job) => { const { filename } = job.data; console.log(`छवि प्रसंस्करण: ${filename}`); // प्रसंस्करण का अनुकरण await new Promise(resolve => setTimeout(resolve, 2000)); return { processed: true };});
// कार्य जोड़नाimageQueue.createJob({ filename: 'photo.jpg'}) .retries(2) .del