Junior — Middle
Expliquez le concept de Prefetch et comment il est utilisé dans RabbitMQ pour gérer la livraison des messages
sobes.tech IA
Réponse de l'IA
Prefetch dans RabbitMQ est un mécanisme qui limite le nombre de messages qu’un consommateur peut recevoir du broker en même temps avant de confirmer leur traitement.
Cela aide à contrôler la charge sur le consommateur et évite la situation où il reçoit trop de messages et ne peut pas tous les traiter à temps, ce qui pourrait entraîner une surcharge de mémoire ou des retards.
Par exemple, si vous définissez le nombre de prélecture à 1, le consommateur ne recevra qu’un seul message à la fois et n’en recevra pas de nouveau tant qu’il n’aura pas confirmé le traitement du message actuel :
var channel = connection.CreateModel();
channel.BasicQos(0, 1, false); // nombre de prélecture = 1
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) => {
// traitement du message
channel.BasicAck(ea.DeliveryTag, false);
};
channel.BasicConsume(queue: "task_queue", autoAck: false, consumer: consumer);
Ainsi, le préfetch aide à équilibrer la charge et à améliorer la fiabilité du traitement des messages.