Sobes.tech
Junior — Middle

Ի՞նչ է առավելագույն քանակը սպառողների, որոնք կարող են միաժամանակ սպասարկել RabbitMQ-ի մեկ հերթում ուղարկված հաղորդագրությունները:

sobes.tech AI

Պատասխան AI-ից

RabbitMQ-ում չկա խիստ սահմանափակում այն մասին, թե քանի սպառող կարող է միաժամանակ սպասարկել հաղորդագրությունները մեկ հերթից։ Թեորետիկապես, կարելի է միացնել շատ սպառողներ, և RabbitMQ-ն կբաշխի հաղորդագրությունները նրանց միջև round-robin սկզբունքով:

Սակայն պրակտիկայում, առավելագույն սպառողների թիվը սահմանափակվում է սերվերի ռեսուրսներով (CPU, հիշողություն, ցանց) և ծրագրի կատարողականությամբ։ Ընդհանրապես, մեկ հերթի համար սպառողների թիվը տատանվում է մի քանի տասնյակից մինչև հարյուր, բայց կան նաև ավելի մեծ համակարգեր հազարավոր սպառողների հետ:

Կարևոր է հաշվի առնել, որ շատ մեծ թվով սպառողները կարող են հանգեցնել կատարողականության նվազման՝ կոնտեքստի փոխարկման ծախսերի և ցանցային ուշացումների պատճառով:

Node.js-ում amqplib օգտագործելով մի քանի սպառողների կոնֆիգուրացիայի օրինակ՝

const amqp = require('amqplib');

async function startConsumer() {
  const connection = await amqp.connect('amqp://localhost');
  const channel = await connection.createChannel();
  const queue = 'task_queue';

  await channel.assertQueue(queue, { durable: true });
  channel.prefetch(1);

  channel.consume(queue, msg => {
    if (msg !== null) {
      console.log(`Received: ${msg.content.toString()}`);
      channel.ack(msg);
    }
  });
}

// Շատ սպառողների գործարկում
for (let i = 0; i < 10; i++) {
  startConsumer();
}

Այստեղ ստեղծվում է 10 սպառող, որոնք միաժամանակ կարդում են նույն հերթից։