我一般只是开始使用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所说的是什么?通常如何配置?
通常这样做吗?我是否应该让交换将消息路由到两个单独的队列中,并由一个使用者使用?