Estou apenas começando a usar o RabbitMQ e o AMQP em geral.
- Eu tenho uma fila de mensagens
- Tenho vários consumidores, que gostaria de fazer coisas diferentes com a mesma mensagem .
A maior parte da documentação do RabbitMQ parece estar focada no round-robin, ou seja, onde uma única mensagem é consumida por um único consumidor, com a carga sendo distribuída entre cada consumidor. Este é realmente o comportamento que eu testemunho.
Um exemplo: o produtor possui uma única fila e envia mensagens a cada 2 segundos:
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)
})
E aqui está um consumidor:
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)
})
})
})
Se eu iniciar o consumidor duas vezes, posso ver que cada consumidor está consumindo mensagens alternativas no comportamento de rodízio. Por exemplo, vou ver as mensagens 1, 3, 5 em um terminal, 2, 4, 6 no outro .
Minha pergunta é:
Posso fazer com que cada consumidor receba as mesmas mensagens? Ou seja, ambos os consumidores recebem a mensagem 1, 2, 3, 4, 5, 6? Como é chamado o AMQP / RabbitMQ? Como é configurado normalmente?
Isso é comumente feito? Devo apenas fazer com que o Exchange direcione a mensagem para duas filas separadas, com um único consumidor?