DEV Community

Thiago da Silva Adriano
Thiago da Silva Adriano

Posted on

Introdução ao RabbitMQ

O RabbitMQ é um message broker (intermediador de mensagens) open-source que implementa o protocolo AMQP (Advanced Message Queuing Protocol).

Desenvolvido em Erlang, ele atua como um intermediário entre aplicações, permitindo que elas se comuniquem de forma assíncrona através do envio e recebimento de mensagens.

Imagine o RabbitMQ como um "correio digital" para suas aplicações:

você deposita uma mensagem em uma "caixa postal" (queue) e ela é entregue ao destinatário quando ele estiver disponível para processá-la.

Características Principais

  • Alta disponibilidade e tolerância a falhas
  • Escalabilidade horizontal e vertical
  • Flexibilidade de roteamento de mensagens
  • Multiplataforma (Linux, Windows, macOS)
  • Múltiplas linguagens de programação suportadas

Conceitos Fundamentais

Producer (Produtor)

A aplicação que envia mensagens para o RabbitMQ.

Queue (Fila)

O buffer que armazena mensagens dentro do RabbitMQ. É como uma caixa postal que pode receber e armazenar mensagens até que um consumidor as processe.

Consumer (Consumidor)

A aplicação que recebe e processa mensagens da queue.

Exchange (Roteador)

Componente responsável por rotear mensagens para as queues apropriadas baseado em regras de roteamento.

Binding (Ligação)

A conexão entre um exchange e uma queue, definindo como as mensagens devem ser roteadas.

Protocolos Suportados

AMQP 0-9-1 (Principal)

  • Protocolo nativo do RabbitMQ
  • Binário e eficiente
  • Suporte completo a todas as funcionalidades
  • Porta padrão: 5672 (sem TLS) / 5671 (com TLS)
Exemplo de conexão AMQP:
amqp://usuario:senha@localhost:5672/vhost
Enter fullscreen mode Exit fullscreen mode

MQTT (Message Queuing Telemetry Transport)

  • Protocolo leve para dispositivos IoT
  • Baixo consumo de largura de banda
  • Porta padrão: 1883 (sem TLS) / 8883 (com TLS)

STOMP (Simple Text Oriented Messaging Protocol)

  • Protocolo baseado em texto
  • Simples de implementar
  • Porta padrão: 61613

HTTP/HTTPS (via Management API)

  • Interface REST para administração
  • Porta padrão: 15672 (Management UI)

Tipos de Exchange

Direct Exchange

Roteia mensagens baseado na routing key exata.

Routing Key: "user.created" → Queue: user_notifications
Enter fullscreen mode Exit fullscreen mode

Topic Exchange

Permite roteamento com padrões usando wildcards.

Pattern: "user.*" → Captura: "user.created", "user.updated", "user.deleted"
Pattern: "*.important" → Captura: "user.important", "order.important"
Enter fullscreen mode Exit fullscreen mode

Fanout Exchange

Envia mensagens para todas as queues conectadas (broadcast).

Uma mensagem → Múltiplas queues simultaneamente
Enter fullscreen mode Exit fullscreen mode

Headers Exchange

Roteia baseado nos headers da mensagem, não na routing key.

Em resumo, o RabbitMQ é uma ferramenta fundamental para arquiteturas modernas, oferecendo uma solução robusta e flexível para comunicação assíncrona entre aplicações.

Top comments (0)