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
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
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"
Fanout Exchange
Envia mensagens para todas as queues conectadas (broadcast).
Uma mensagem → Múltiplas queues simultaneamente
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)