Node.js और RabbitMQ में एक साधारण संदेश कतार कैसे बनाएं?

ब्लॉग

Node.js और RabbitMQ में एक साधारण संदेश कतार कैसे बनाएं?

Node.js और RabbitMQ में एक साधारण संदेश कतार कैसे बनाएं?

निर्माता और उपभोक्ता एक दूसरे के साथ सीधे बातचीत नहीं करते हैं, लेकिन वे संदेश कतार के साथ बातचीत करते हैं। संदेशों को संभालने का यह तरीका निर्माता को उपभोक्ता से अलग करता है ताकि उन्हें एक साथ संदेश कतार के साथ बातचीत करने की आवश्यकता न हो।



Node.js अनुप्रयोग प्रारंभ करना

निम्नलिखित कमांड का उपयोग करके एप्लिकेशन को प्रारंभ करें:

एनएफटी कला वित्त सिक्का कैसे खरीदें
mkdir node-queue cd node-queue npm init -y touch index.js

AMQP निर्भरता स्थापित करें जिसका उपयोग Node.js एप्लिकेशन को RabbitMQ के साथ एकीकृत करने के लिए किया जाएगा।



npm install –-save amqplib

RabbitMQ स्थापित करना

मैंने डाउनलोड करके इस उदाहरण को प्रदर्शित करने के लिए RabbitMQ स्थापित किया है यहां . एक बार स्थापित करने के बाद, एक कतार बनाएं जिसे कहा जाता है 'नोड_क्यू' .



खरगोशएमक्यू

कार्यान्वयन निर्माता

अब हम Node.js एप्लिकेशन में एक निर्माता को लागू करेंगे, जो एक संदेश को कतार में रखेगा।

const amqp = require('amqplib/callback_api'); amqp.connect('amqp://localhost', function(error, connection) { if (error) { throw error; } connection.createChannel(function(error1, channel) { if (error1) { throw error1; } let queue = 'node_queue'; let msg = 'Test message'; channel.assertQueue(queue, { durable: true }); channel.sendToQueue(queue, Buffer.from(msg), { persistent: true }); console.log('Sent '%s'', msg); }); setTimeout(function() { connection.close(); process.exit(0) }, 500); });

उपरोक्त कोड स्निपेट में, हमने आयात किया है अमकप्लिब हम RabbitMQ सर्वर का उपयोग करके कनेक्शन स्थापित करते हैं एएमक्यूपी.कनेक्ट ()। फिर हम एक चैनल बनाते हैं जिसके भीतर कतार में संदेश भेजने के लिए एपीआई रहता है।

channel.assertQueue () अस्तित्व में एक कतार का दावा करता है। यदि कतार मौजूद नहीं है, तो यह सर्वर पर बनेगी। संदेश सर्वर को बाइट सरणी प्रारूप में भेजा जाएगा। कुछ समय बाद कनेक्शन बंद कर दिया जाएगा।

अब, कमांड चलाकर Node.js ऐप शुरू करें: नोड अनुक्रमणिका.जे.एस.

RabbitMQ डैशबोर्ड पर नेविगेट करें। हम देखेंगे कि कतार में एक संदेश तैयार है।

दिखाता है कि एक संदेश कतार में उपलब्ध है

उपभोक्ता को लागू करना

आइए हम एक उपभोक्ता को लागू करें जो कतार में रखे गए संदेश का उपभोग करेगा।

amqp.connect('amqp://localhost', function(error0, connection) { if (error0) { throw error0; } connection.createChannel(function(error1, channel) { if (error1) { throw error1; } var queue = 'node_queue'; channel.assertQueue(queue, { durable: true }); channel.prefetch(1); console.log('Waiting for messages in %s', queue); channel.consume(queue, function(msg) { console.log('Received '%s'', msg.content.toString()); setTimeout(function() { channel.ack(msg); }, 1000); }); }); });

RabbitMQ सर्वर से कनेक्शन स्थापित करना निर्माता के समान है। हम कनेक्शन स्थापित करते हैं और उस कतार की घोषणा करते हैं जिससे हम संदेशों का उपभोग करेंगे।

हम यहां कतार पर भी जोर देते हैं क्योंकि उपभोक्ता प्रकाशक से पहले शुरू हो सकता है, इसलिए हम यह सुनिश्चित करना चाहते हैं कि उपभोक्ता इससे संदेशों का उपभोग करने से पहले कतार मौजूद हो।

channel.consum() सर्वर से संदेश पुनर्प्राप्त करता है।

एप्लिकेशन को पुनरारंभ करें और डैशबोर्ड पर नेविगेट करें। हम देखेंगे कि कोई संदेश उपभोग करने के लिए नहीं बचा है।

exe करने के लिए जावास्क्रिप्ट संकलित करें

दिखाता है कि कोई संदेश उपभोग की प्रतीक्षा नहीं कर रहा है

इस लेख में, मैंने निर्माता और उपभोक्ता दोनों को एक ही एप्लिकेशन में लागू किया है। ध्यान दें कि आवश्यकता के आधार पर उन्हें अलग से कॉन्फ़िगर किया जा सकता है।

इस पर पूरा उदाहरण मिल सकता है गिटहब भंडार .

#नोड-जेएस