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