मैं अभी सामान्य रूप से RabbitMQ और AMQP का उपयोग करना शुरू कर रहा हूं।
- मेरे पास संदेशों की कतार है
- मेरे पास कई उपभोक्ता हैं, जो एक ही संदेश के साथ अलग-अलग चीजें करना चाहते हैं ।
अधिकांश RabbitMQ दस्तावेज़ीकरण राउंड-रॉबिन पर ध्यान केंद्रित करने के लिए लगता है, अर्थात जहां एक एकल संदेश का उपभोग एकल उपभोक्ता द्वारा किया जाता है, जिसमें लोड प्रत्येक उपभोक्ता के बीच फैलता है। यह वास्तव में मेरे द्वारा देखा गया व्यवहार है।
एक उदाहरण: निर्माता के पास एक ही कतार है, और हर 2 सेकंड में संदेश भेजें:
var amqp = require('amqp');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });
var count = 1;
connection.on('ready', function () {
var sendMessage = function(connection, queue_name, payload) {
var encoded_payload = JSON.stringify(payload);
connection.publish(queue_name, encoded_payload);
}
setInterval( function() {
var test_message = 'TEST '+count
sendMessage(connection, "my_queue_name", test_message)
count += 1;
}, 2000)
})
और यहाँ एक उपभोक्ता है:
var amqp = require('amqp');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });
connection.on('ready', function () {
connection.queue("my_queue_name", function(queue){
queue.bind('#');
queue.subscribe(function (message) {
var encoded_payload = unescape(message.data)
var payload = JSON.parse(encoded_payload)
console.log('Recieved a message:')
console.log(payload)
})
})
})
यदि मैं उपभोक्ता को दो बार शुरू करता हूं , तो मैं देख सकता हूं कि प्रत्येक उपभोक्ता राउंड-रॉबिन व्यवहार में वैकल्पिक संदेशों का उपभोग कर रहा है। जैसे, मैं एक टर्मिनल में 1, 3, 5 के संदेश देखूंगा, दूसरे में 2, 4, 6 ।
मेरा सवाल यह है कि:
क्या मेरे पास प्रत्येक उपभोक्ता समान संदेश प्राप्त कर सकता है? यानी, दोनों उपभोक्ताओं को 1, 2, 3, 4, 5, 6 संदेश मिलेंगे? इसे AMQP / RabbitMQ में क्या कहा जाता है? यह सामान्य रूप से कैसे कॉन्फ़िगर किया गया है?
क्या यह आमतौर पर किया जाता है? क्या मुझे बदले में एक ही उपभोक्ता के साथ, संदेश को दो अलग-अलग कतारों में बदलना चाहिए?