Genel olarak RabbitMQ ve AMQP kullanmaya başladım.
- Bir mesaj kuyruğum var
- Aynı mesajla farklı şeyler yapmak istediğim birden fazla tüketicim var .
RabbitMQ belgelerinin çoğu yuvarlak döngüye odaklanmış gibi görünmektedir, yani tek bir mesaj tek bir tüketici tarafından tüketilir ve yük her tüketici arasında yayılır. Bu gerçekten şahit olduğum davranış.
Örnek: yapımcının tek bir kuyruğu vardır ve her 2 saniyede bir mesaj gönderir:
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)
})
Ve işte bir tüketici:
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)
})
})
})
Tüketiciyi iki kez başlatırsam, her bir tüketicinin round-robin davranışında alternatif mesajlar tükettiğini görebilirim. Örneğin, bir terminalde 1, 3, 5, diğerinde 2, 4, 6 mesajlarını göreceğim .
Sorum şu:
Her tüketicinin aynı iletileri almasını sağlayabilir miyim? Yani, her iki tüketiciye de mesaj 1, 2, 3, 4, 5, 6 mı geliyor? AMQP / RabbitMQ konuşmasında buna ne denir? Normalde nasıl yapılandırılır?
Bu yaygın olarak mı yapılıyor? Değişimin, mesajı tek bir tüketici ile iki ayrı kuyruğa yönlendirmesi gerekir mi?