Sobes.tech
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.