ฉันเพิ่งเริ่มใช้ RabbitMQ และ AMQP โดยทั่วไป
- ฉันมีคิวข้อความ
- ฉันมีผู้บริโภคหลายที่ผมอยากจะทำสิ่งที่แตกต่างกับข้อความเดียวกัน
เอกสาร RabbitMQ ส่วนใหญ่ดูเหมือนว่าจะเน้นไปที่ round-robin นั่นคือการบริโภคข้อความเดียวโดยผู้บริโภครายเดียวโดยมีการกระจายโหลดระหว่างผู้ใช้แต่ละราย นี่คือพฤติกรรมที่ฉันเป็นพยาน
ตัวอย่าง: ผู้สร้างมีคิวเดียวและส่งข้อความทุก 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 ในหนึ่ง terminal, 2, 4, 6 ในอื่น ๆ
คำถามของฉันคือ:
- ฉันสามารถให้ผู้บริโภคแต่ละคนได้รับข้อความเดียวกันได้หรือไม่? คือผู้บริโภคทั้งสองได้รับข้อความ 1, 2, 3, 4, 5, 6? สิ่งนี้เรียกว่าอะไรใน AMQP / RabbitMQ พูด ปกติแล้วมันเป็นวิธีการกำหนดค่า? 
- เป็นสิ่งปกติหรือไม่ ฉันควรให้เส้นทางแลกเปลี่ยนข้อความเป็นสองคิวแยกกันโดยมีผู้บริโภครายเดียวหรือไม่