Я тільки починаю використовувати 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? Як це нормально налаштовано?
Це зазвичай робиться? Чи потрібно мені просто обміняти маршрут обміну повідомленням у дві окремі черги, замість цього один споживач?