शुरुआती लोगों के लिए JavaScript में कार्य कतारें: एक संपूर्ण गाइड

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

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

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

परिचय: कार्य कतारों की आवश्यकता क्यों है?

\n\n

कल्पना करें कि आप Node.js पर एक वेब सर्वर चला रहे हैं। एक उपयोगकर्ता 1000 ईमेल भेजने का अनुरोध भेजता है। यदि इस अनुरोध को समकालिक रूप से संसाधित किया जाए, तो सर्वर कुछ मिनटों के लिए "लटक" जाएगा - अन्य सभी उपयोगकर्ता प्रतिक्रिया प्राप्त नहीं कर पाएंगे।

\n\n

इस समस्या का समाधान क्या है? उत्तर है - कार्य कतारें (task queues)। वे संसाधन-गहन संचालन (ईमेल भेजना, PDF जनरेशन, इमेज प्रोसेसिंग) को स्थगित करने और एप्लिकेशन के मुख्य थ्रेड को ब्लॉक किए बिना उन्हें पृष्ठभूमि में निष्पादित करने की अनुमति देते हैं।

\n\n

इस लेख में हम चर्चा करेंगे:

\n
    \n
  • कार्य कतार क्या है और यह कैसे काम करती है
  • \n
  • Node.js के लिए लोकप्रिय लाइब्रेरीज़ (Bull, Kue)
  • \n
  • कोड उदाहरण: कार्यों का निर्माण, जोड़ना और प्रसंस्करण
  • \n
  • शुरुआती लोगों के लिए सर्वोत्तम प्रथाएँ
  • \n
\n\n

1. Node.js में कार्य कतारों की मूल बातें

\n\n

कार्य कतार क्या है?

\n

कार्य कतार एक डेटा संरचना है जो FIFO (First In, First Out - पहले आओ, पहले पाओ) सिद्धांत पर काम करती है। कार्यों को कतार के अंत में जोड़ा जाता है, और शुरुआत से संसाधित किया जाता है। आमतौर पर कतारें Redis - मेमोरी में तेज़ की-वैल्यू स्टोरेज - के आधार पर बनाई जाती हैं।

\n\n

कतार के मुख्य घटक:

\n
    \n
  • Producer - कोड जो कतार में कार्य जोड़ता है
  • \n
  • Consumer (Worker) - कोड जो कार्यों को लेता है और उन्हें निष्पादित करता है
  • \n
  • Queue Manager - तंत्र जो कतार का प्रबंधन करता है (आमतौर पर Redis)
  • \n
\n\n

लोकप्रिय लाइब्रेरीज़

\n

Node.js के लिए दो मुख्य लाइब्रेरीज़ हैं:

\n
    \n
  • Bull - आधुनिक, तेज़, प्राथमिकताओं, पुनर्प्रयासों और विलंबों के समर्थन के साथ
  • \n
  • Kue - पुरानी, लेकिन सरल लाइब्रेरी (अब कम लोकप्रिय)
  • \n
\n

इस लेख में हम Bull पर ध्यान केंद्रित करेंगे, क्योंकि यह सक्रिय रूप से समर्थित है और इसमें अधिक सुविधाएँ हैं।

\n\n

2. Bull की स्थापना और कॉन्फ़िगरेशन

\n\n

चरण 1: Redis की स्थापना

\n

Bull Redis का उपयोग करता है। यदि आपके पास Redis नहीं है, तो इसे स्थापित करें:

\n
# macOS\nbrew install redis\n\n# Ubuntu\nsudo apt-get install redis-server\n\n# Redis चलाएँ\nredis-server
\n\n

चरण 2: Bull की स्थापना

\n

एक नया प्रोजेक्ट बनाएँ और पैकेज स्थापित करें:

\n
mkdir queue-demo\ncd queue-demo\nnpm init -y\nnpm install bull
\n\n

चरण 3: बुनियादी कॉन्फ़िगरेशन

\n

एक फ़ाइल queue.js बनाएँ:

\n
const Queue = require('bull');\n\n// 'emailQueue' नाम से एक कतार बनाएँ\nconst emailQueue = new Queue('emailQueue', {\n  redis: { host: '127.0.0.1', port: 6379 }\n});\n\nmodule.exports = emailQueue;
\n\n

3. उदाहरण: ईमेल भेजने के लिए कतार

\n\n

चरण 1: Producer बनाएँ (कार्य जोड़ना)

\n

एक फ़ाइल producer.js बनाएँ:

\n
const emailQueue = require('./queue');\n\nasync function addEmailTask(to, subject, body) {\n  // कतार में एक कार्य जोड़ें\n  const job = await emailQueue.add({\n    to: to,\n    subject: subject,\n    body: body\n  }, {\n    // कार्य विकल्प\n    attempts: 3,          // त्रुटि पर प्रयासों की संख्या\n    backoff: 5000,        // प्रयासों के बीच विलंब (5 सेकंड)\n    delay: 1000           // निष्पादन से पहले विलंब (1 सेकंड)\n  });\n\n  console.log(`कार्य ID के साथ जोड़ा गया: ${job.id}`);\n  return job;\n}\n\n// उपयोग उदाहरण\naddEmailTask('user@example.com', 'नमस्ते!', 'परीक्षण संदेश');
\n\n

चरण 2: Worker बनाएँ (कार्य प्रसंस्करण)

\n

एक फ़ाइल worker.js बनाएँ:

\n
const emailQueue = require('./queue');\n\n// ईमेल भेजने का अनुकरण करने वाला फ़ंक्शन\nasync function sendEmail(to, subject, body) {\n  console.log(`${to} को ईमेल भेजा जा रहा है...`);\n  // विलंब का अनुकरण\n  await new Promise(resolve => setTimeout(resolve, 2000));\n  console.log(`ईमेल भेजा गया: ${subject}`);\n}\n\n// कतार हैंडलर\nemai                

ब्लॉग

पुस्तक अनुशंसाएँ