Skip to main content

Command Palette

Search for a command to run...

Como Funcionam os Sistemas de Mensageria: Entendendo o RabbitMQ na Prática

Updated
3 min read
M

Desenvolvedor focado em PL/SQL, Java, Angular e qualidade de código.

Entenda o que são sistemas de mensageria, como o RabbitMQ funciona, por que são importantes em aplicações modernas e veja um exemplo prático no contexto de sistemas de pagamento.


🔍 O que são sistemas de mensageria?

Sistemas de mensageria, também chamados de message brokers, são componentes que facilitam a comunicação entre serviços em arquiteturas distribuídas. Eles permitem que partes de um sistema se comuniquem de forma assíncrona, escalável e desacoplada.

Esses sistemas funcionam como intermediários, recebendo mensagens de um ponto e encaminhando para outro — geralmente utilizando filas.


💡 Por que usar mensageria?

  • Desacoplamento: serviços não precisam estar ativos ao mesmo tempo para trocarem informações.

  • Escalabilidade: melhora o desempenho em sistemas com alto volume de requisições.

  • Resiliência: evita perda de dados, mesmo que algum serviço esteja temporariamente fora do ar.

  • Organização de processos: permite que tarefas pesadas sejam processadas em segundo plano.


🛠️ RabbitMQ: um dos mensageiros mais usados

RabbitMQ é um message broker baseado no protocolo AMQP (Advanced Message Queuing Protocol). Ele trabalha com filas (queues), trocas (exchanges) e mensagens, permitindo controle total do fluxo de dados.


🔁 Como o RabbitMQ funciona?

O fluxo básico envolve:

  1. Producer: envia uma mensagem.

  2. Exchange: recebe a mensagem e decide para qual fila ela deve ir.

  3. Queue: armazena a mensagem até que ela seja consumida.

  4. Consumer: consome a mensagem da fila e processa.


🧾 Exemplo prático: processamento de pagamentos

Imagine um sistema onde o usuário faz um pagamento e o sistema precisa:

  • Registrar o pagamento.

  • Enviar e-mail de confirmação.

  • Notificar terceiros (ex: gateway de pagamento).

  • Atualizar o saldo do cliente.

Com RabbitMQ, isso pode ser feito assim:

[API Pagamento]
   |
   | ---> Envia mensagem para a Exchange "pagamentos"
                      |
                Exchange "pagamentos"
                      |
      +---------------+---------------+
      |               |               |
[Queue Email]   [Queue Gateway]   [Queue Saldo]

Cada consumidor atua de forma independente e paralela, evitando lentidão na resposta da API principal.


🧰 Exemplo de uso básico com Node.js e amqplib

publisher.js

const amqp = require('amqplib');

async function sendMessage() {
  const conn = await amqp.connect('amqp://localhost');
  const channel = await conn.createChannel();
  const queue = 'pagamentos';

  await channel.assertQueue(queue);
  channel.sendToQueue(queue, Buffer.from('Pagamento recebido'));

  console.log('Mensagem enviada!');
  setTimeout(() => { conn.close(); process.exit(0); }, 500);
}

sendMessage();

consumer.js

const amqp = require('amqplib');

async function receiveMessage() {
  const conn = await amqp.connect('amqp://localhost');
  const channel = await conn.createChannel();
  const queue = 'pagamentos';

  await channel.assertQueue(queue);
  console.log('Aguardando mensagens...');

  channel.consume(queue, msg => {
    if (msg) {
      console.log('Mensagem recebida:', msg.content.toString());
      channel.ack(msg);
    }
  });
}

receiveMessage();

📊 RabbitMQ vs outros sistemas

SistemaProtocoloEscalabilidadeCasos comuns
RabbitMQAMQPAltaMicroserviços, filas assíncronas
Apache KafkaCustomMuito altaLogs de eventos, analytics
Amazon SQSAWSAltaArquitetura serverless

✅ Conclusão

Sistemas de mensageria como o RabbitMQ são peças-chave em arquiteturas modernas. Eles permitem construir sistemas escaláveis, resilientes e desacoplados, otimizando desde simples tarefas assíncronas até fluxos de negócios complexos.


🔗 Próximos passos

  • Instale o RabbitMQ localmente ou via Docker.

  • Crie um pequeno sistema com Node.js ou Java que utilize filas.

  • Explore padrões como RPC com RabbitMQ, dead-letter queues e retry policies.

More from this blog

Dev Prático: Carreira e Código

15 posts

Vivências, aprendizados e perrengues da vida dev.