Tôi mới bắt đầu sử dụng RabbitMQ và AMQP nói chung.
- Tôi có một hàng tin nhắn
- Tôi có nhiều người tiêu dùng, tôi muốn làm những việc khác nhau với cùng một thông điệp .
Hầu hết các tài liệu của RabbitMQ dường như tập trung vào vòng tròn, tức là trong đó một tin nhắn được sử dụng bởi một người tiêu dùng, với tải được lan truyền giữa mỗi người tiêu dùng. Đây thực sự là hành vi tôi chứng kiến.
Một ví dụ: nhà sản xuất có một hàng đợi và gửi tin nhắn cứ sau 2 giây:
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)
})
Và đây là một người tiêu dùng:
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)
})
})
})
Nếu tôi bắt đầu người tiêu dùng hai lần, tôi có thể thấy rằng mỗi người tiêu dùng đang tiêu thụ các thông điệp thay thế trong hành vi quay vòng. Ví dụ: tôi sẽ thấy các tin nhắn 1, 3, 5 trong một thiết bị đầu cuối, 2, 4, 6 trong thiết bị đầu cuối khác .
Câu hỏi của tôi là:
Tôi có thể để mỗi người tiêu dùng nhận được cùng một tin nhắn không? Tức là cả hai người tiêu dùng nhận được tin nhắn 1, 2, 3, 4, 5, 6? Cái này được gọi là gì trong AMQP / RabbitMQ nói? Làm thế nào nó được cấu hình bình thường?
Điều này thường được thực hiện? Tôi có nên chỉ có lộ trình trao đổi tin nhắn thành hai hàng đợi riêng biệt, với một người tiêu dùng, thay vào đó?