Qual é o número máximo de consumidores que podem ser atendidos simultaneamente por mensagens numa única fila RabbitMQ?
sobes.tech IA
Resposta da IA
No RabbitMQ há uma restrição rígida no número de consumidores que podem atender simultaneamente mensagens de uma fila. Teoricamente, pode-se conectar muitos consumidores, e o RabbitMQ distribuirá as mensagens entre eles por round-robin.
No entanto, na prática, o número máximo de consumidores é limitado pelos recursos do servidor (CPU, memória, rede) e pelo desempenho da aplicação. Normalmente, o número de consumidores por fila varia de algumas dezenas a centenas, mas também existem sistemas mais grandes com milhares de consumidores.
É importante considerar que um número demasiado grande de consumidores pode levar à redução do desempenho devido aos custos de troca de contexto e atrasos de rede.
Exemplo de configuração de múltiplos consumidores em Node.js usando amqplib:
const amqp = require('amqplib');
async function startConsumer() {
const connection = await amqp.connect('amqp://localhost');
const channel = await connection.createChannel();
const queue = 'task_queue';
await channel.assertQueue(queue, { durable: true });
channel.prefetch(1);
channel.consume(queue, msg => {
if (msg !== null) {
console.log(`Received: ${msg.content.toString()}`);
channel.ack(msg);
}
});
}
// Iniciar vários consumidores
for (let i = 0; i < 10; i++) {
startConsumer();
}
Aqui, criam-se 10 consumidores que leem simultaneamente de uma mesma fila.