Я только начинаю использовать 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? Как обычно он настроен?
-
Это обычно делается? Должен ли я просто иметь обменный маршрут сообщение в две отдельные очереди с одним потребителем?