Junior — Middle
Magyarázza el a Prefetch fogalmát, és hogyan alkalmazzák a RabbitMQ-ban az üzenetek kézbesítésének kezelésére
sobes.tech MI
Válasz az MI-től
A Prefetch a RabbitMQ-ban egy mechanizmus, amely korlátozza, hogy egy fogyasztó egyszerre hány üzenetet kaphat a brókerből, mielőtt megerősítené azok feldolgozását.
Ez segít ellenőrizni a fogyasztó terhelését, és megelőzi, hogy túl sok üzenetet kapjon, és ne tudja azokat időben feldolgozni, ami memória túlcsorduláshoz vagy késleltetésekhez vezethet.
Például, ha a prefetch száma 1-re van állítva, a fogyasztó csak egy üzenetet kap egyszerre, és nem kap újat, amíg nem erősíti meg a jelenlegi feldolgozását:
var channel = connection.CreateModel();
channel.BasicQos(0, 1, false); // prefetch szám = 1
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) => {
// üzenet feldolgozása
channel.BasicAck(ea.DeliveryTag, false);
};
channel.BasicConsume(queue: "task_queue", autoAck: false, consumer: consumer);
Így a prefetch segít kiegyensúlyozni a terhelést és növeli az üzenetfeldolgozás megbízhatóságát.