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.