Sobes.tech
Junior — Middle

Vysvetlite koncept Prefetch a ako sa používa v RabbitMQ na riadenie doručenia správ

sobes.tech AI

Odpoveď od AI

Prefetch v RabbitMQ je mechanizmus, ktorý obmedzuje počet správ, ktoré môže spotrebiteľ súčasne prijať od brokera, skôr než potvrdí ich spracovanie.

Toto pomáha kontrolovať zaťaženie na spotrebiteľovi a zabraňuje situáciám, keď dostáva príliš veľa správ a nestíha ich spracovať včas, čo môže viesť k preplneniu pamäte alebo oneskoreniam.

Napríklad, ak nastavíte počet prefetch na 1, spotrebiteľ dostane iba jednu správu naraz a nedostane novú, kým nepotvrdí spracovanie aktuálnej:

var channel = connection.CreateModel();
channel.BasicQos(0, 1, false); // počet prefetch = 1

var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) => {
    // spracovanie správy
    channel.BasicAck(ea.DeliveryTag, false);
};

channel.BasicConsume(queue: "task_queue", autoAck: false, consumer: consumer);

Týmto spôsobom prefetch pomáha vyvážiť zaťaženie a zvyšovať spoľahlivosť spracovania správ.