Saya baru mulai menggunakan RabbitMQ dan AMQP secara umum.
- Saya memiliki antrian pesan
- Saya memiliki banyak konsumen, yang ingin saya lakukan hal yang berbeda dengan pesan yang sama .
Sebagian besar dokumentasi RabbitMQ tampaknya difokuskan pada round-robin, yaitu di mana satu pesan dikonsumsi oleh satu konsumen, dengan beban yang tersebar di antara masing-masing konsumen. Ini memang perilaku yang saya saksikan.
Contoh: produser memiliki antrian tunggal, dan mengirim pesan setiap 2 detik:
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)
})
Dan inilah konsumennya:
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)
})
})
})
Jika saya memulai konsumen dua kali, saya dapat melihat bahwa setiap konsumen mengkonsumsi pesan alternatif dalam perilaku round-robin. Misalnya, saya akan melihat pesan 1, 3, 5 di satu terminal, 2, 4, 6 di terminal lain .
Pertanyaanku adalah:
Bisakah saya meminta setiap konsumen menerima pesan yang sama? Yaitu, kedua konsumen mendapatkan pesan 1, 2, 3, 4, 5, 6? Apakah ini yang disebut dalam pembicaraan AMQP / RabbitMQ? Bagaimana biasanya dikonfigurasi?
Apakah ini biasa dilakukan? Haruskah saya meminta pertukaran rute pesan menjadi dua antrian terpisah, dengan satu konsumen, sebagai gantinya?