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

Matheus AlmeidaMatheus Almeida
3 min read

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.

0
Subscribe to my newsletter

Read articles from Matheus Almeida directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Matheus Almeida
Matheus Almeida

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