Node.js में कार्य कतारें: Bull, Bee-Queue, Kue और Redis पर कार्यान्वयन

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

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

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

JavaScript (Node.js) के लिए कार्य कतारें: Bull, Bee-Queue और Kue

\n\n

Node.js पर वेब एप्लिकेशन विकसित करते समय, HTTP अनुरोधों के मुख्य प्रवाह के बाहर संसाधन-गहन या लंबी अवधि के संचालन करने की आवश्यकता अक्सर उत्पन्न होती है। ईमेल न्यूज़लेटर भेजना, PDF रिपोर्ट तैयार करना, अपलोड की गई छवियों को संसाधित करना या बाहरी API के साथ इंटरैक्ट करना - ये सभी कार्य उपयोगकर्ता को प्रतिक्रिया को अवरुद्ध कर सकते हैं यदि उन्हें समकालिक रूप से निष्पादित किया जाए। इस समस्या को हल करने के लिए कार्य कतारों (job queues) का उपयोग किया जाता है।

\n\n

कार्य कतार एक तंत्र है जो अनुमति देता है:

\n
    \n
  • कार्य को पृष्ठभूमि में करने में विलंब करना।
  • \n
  • प्राथमिकताओं और प्रसंस्करण क्रम का प्रबंधन करना।
  • \n
  • त्रुटियों पर स्वचालित रूप से कार्यों को दोहराना।
  • \n
  • प्रसंस्करण को क्षैतिज रूप से स्केल करना (एकाधिक वर्कर)।
  • \n
\n\n

Node.js पारिस्थितिकी तंत्र में, तीन लाइब्रेरीज़ सबसे लोकप्रिय हैं: Bull, Bee-Queue और Kue। ये सभी Redis के ऊपर बनाई गई हैं, जो उच्च प्रदर्शन और विफलता सहनशीलता सुनिश्चित करता है। आइए उनमें से प्रत्येक पर विस्तार से नज़र डालें।

\n\n
\n\n

1. Bull — सबसे लोकप्रिय और सुविधा संपन्न कतार

\n\n

Bull (npm: bull) एक परिपक्व, अच्छी तरह से प्रलेखित लाइब्रेरी है जो लगभग सभी आवश्यक परिदृश्यों का समर्थन करती है: विलंबित कार्य, अनुसूचित पुनरावृत्ति, प्राथमिकताएँ, दर सीमाएँ, त्रुटि स्टैक और यहाँ तक कि एक दृश्य इंटरफ़ेस (Arete)। Bull समुदाय द्वारा सक्रिय रूप से समर्थित है और production परियोजनाओं के लिए अनुशंसित है।

\n\n

स्थापना:

\n
npm install bull
\n\n

एक सरल उदाहरण — कतार और हैंडलर बनाना:

\n\n
const Queue = require('bull');\n\n// 'email' नाम से एक कतार बनाएँ\nconst emailQueue = new Queue('email', {\n  redis: { host: 'localhost', port: 6379 }\n});\n\n// एक कार्य (job) जोड़ें\nemailQueue.add({\n  to: 'user@example.com',\n  subject: 'स्वागत है!',\n  body: 'पंजीकरण के लिए धन्यवाद।'\n}, {\n  attempts: 3,          // त्रुटि पर प्रयास\n  backoff: 5000,        // प्रयासों के बीच देरी (5 सेकंड)\n  delay: 10000          // 10 सेकंड के लिए विलंब\n});\n\n// हैंडलर (वर्कर)\nemailQueue.process(async (job) => {\n  const { to, subject, body } = job.data;\n  console.log(`${to} को ईमेल भेजा जा रहा है: ${subject}`);\n  // यहाँ आपका ईमेल भेजने का फ़ंक्शन कॉल करें\n  await sendEmail(to, subject, body);\n});
\n\n

Bull की प्रमुख क्षमताएँ:

\n
    \n
  • पुनः प्रयास — पुनर्प्रयासों की संख्या और एक्सपोनेंशियल बैकऑफ़ का कॉन्फ़िगरेशन।
  • \n
  • अनुसूची (cron) — अनुसूची के अनुसार कार्यों का निष्पादन (जैसे, हर रात)।
  • \n
  • प्राथमिकताएँ — उच्च प्राथमिकता वाले कार्य पहले संसाधित होते हैं।
  • \n
  • ईवेंट — ईवेंट की सदस्यता (completed, failed, progress)।
  • \n
  • Graceful shutdown — कार्य का सही समापन।
  • \n
\n\n
\n\n

2. Bee-Queue — हल्की और तेज़ कतार

\n\n

Bee-Queue (npm: bee-queue) Bull का एक न्यूनतम विकल्प है। यह केवल बुनियादी क्षमताएँ प्रदान करता है, लेकिन न्यूनतम ओवरहेड के साथ ऐसा करता है। Bee-Queue सरल परिदृश्यों के लिए आदर्श है जहाँ जटिल सेटिंग्स की आवश्यकता नहीं है, लेकिन गति महत्वपूर्ण है।

\n\n

स्थापना:

\n
npm install bee-queue
\n\n

उपयोग का उदाहरण:

\n\n
const Queue = require('bee-queue');\n\nconst imageQueue = new Queue('image-processing', {\n  redis: { host: '127.0.0.1', port: 6379 },\n  isWorker: true\n});\n\n// एक कार्य जोड़ें\nimageQueue.createJob({ imageId: 123, size: 'thumbnail' })\n  .timeout(30000)        // 30 सेकंड का टाइमआउट\n  .retries(2)            // 2 प्रयास\n  .save()\n  .then(job => console.log('कार्य बनाया गया:', job.id));\n\n// हैंडलर\nimageQueue.process((job, done) => {\n  console.log(`छवि संसाधित की जा रही है ${job.data.imageId}`);\n  // कार्य निष्पादित करें\n  proce                    

अनुशंसाएँ