Message Broker: Comparativo Técnico entre Kafka, RabbitMQ e SQS

06/10/2026  ·  Devskin

Message Broker: Comparativo Técnico entre Kafka, RabbitMQ e SQS

Escolher um message broker é uma das decisões de arquitetura que mais cobram juros no futuro: ela define como seus serviços se acoplam, como falham e quanto custa operar o sistema depois de dois anos de crescimento.

Neste comparativo técnico, analiso Apache Kafka, RabbitMQ e Amazon SQS sob a ótica de quem opera sistemas reais: modelo de dados, garantias de entrega, ordenação, operação e custo. Não existe vencedor universal. Existe aderência ao seu caso de uso e à capacidade do seu time.

Fila ou log: o modelo mental que muda tudo

Antes de comparar produtos, separe dois modelos. No modelo de fila, o broker entrega a mensagem a um consumidor e a remove após o ack. No modelo de log distribuído, as mensagens são anexadas a uma estrutura append-only e permanecem disponíveis conforme a política de retenção, e cada consumidor controla seu próprio offset.

Essa diferença determina se você consegue reprocessar histórico, quantos consumidores independentes leem o mesmo fluxo e como o sistema escala. Todo message broker sério ocupa algum ponto desse espectro. Entender isso evita usar Kafka como fila de tarefas ou RabbitMQ como armazenamento de eventos.

Apache Kafka: log particionado para streaming de eventos

No Kafka, os dados são organizados em tópicos divididos em partições, replicadas entre brokers. A ordenação é garantida apenas dentro de uma partição, e os consumer groups distribuem as partições entre as instâncias de um serviço. Nas versões recentes, o modo KRaft dispensa o ZooKeeper para o gerenciamento de metadados, o que simplifica a operação. Como message broker orientado a log, ele brilha quando o evento é um fato que precisa ser lido por vários sistemas.

  • Prós: replay de histórico, múltiplos consumidores independentes, bom throughput em escrita sequencial e ecossistema maduro (Kafka Connect, Kafka Streams).
  • Contras: operação mais complexa (partições, rebalanceamento, disco), paralelismo limitado ao número de partições, roteamento simples e ausência de retry por mensagem nativo, o que exige tópicos de retry e DLQ.

Casos de uso: event sourcing, CDC (change data capture), pipelines de dados, telemetria e trilhas de auditoria.

RabbitMQ: roteamento flexível e filas de trabalho

O RabbitMQ implementa AMQP 0-9-1 e separa produtor de fila por meio de exchanges (direct, topic, fanout e headers) e bindings. Há acks por mensagem, controle de prefetch, dead-letter exchanges, TTL e prioridades. As quorum queues, baseadas em Raft, trazem replicação consistente, e os streams adicionam um modelo próximo ao de log. Como message broker de propósito geral, ele resolve bem a comunicação entre microsserviços.

  • Prós: roteamento rico, semântica natural para filas de tarefas, retry e DLQ bem resolvidos e latência baixa em cargas típicas.
  • Contras: a mensagem consumida desaparece (fora dos streams), backlogs muito grandes degradam o desempenho e a escala horizontal exige mais planejamento.

Casos de uso: processamento de jobs, integração entre serviços, workflows assíncronos e padrões request/reply.

Amazon SQS: fila gerenciada sem operação

O SQS é um serviço totalmente gerenciado. A fila standard oferece entrega at-least-once com ordenação best-effort. A fila FIFO garante ordenação por message group e oferece deduplicação. Recursos como visibility timeout, DLQ e long polling cobrem a maior parte das necessidades, e a combinação com SNS permite fan-out. Como message broker gerenciado, seu maior valor é eliminar a operação.

  • Prós: zero administração de cluster, escala elástica e integração direta com Lambda e outros serviços AWS.
  • Contras: lock-in na AWS, sem replay de histórico, roteamento limitado e restrições de throughput e de modelo nas filas FIFO. Consulte os limites atuais na documentação oficial.

Se você provisiona essa infraestrutura de forma declarativa, vale ler o review técnico do Terraform para times de TI, que mostra como versionar brokers, filas e permissões como código.

Como escolher o message broker certo

Em vez de comparar tabelas de features, responda a perguntas de arquitetura:

  • Preciso reprocessar eventos antigos? Kafka, ou streams no RabbitMQ.
  • Preciso de roteamento por padrão, prioridade e retry fino? RabbitMQ.
  • Meu time é pequeno e a carga já roda na AWS? SQS.
  • Há exigência de residência de dados ou de cloud nacional? Priorize brokers que você possa hospedar onde o compliance exigir.

Um ponto vale para os três: na prática, a entrega é at-least-once, então o consumidor precisa ser idempotente. Ordenação também é um contrato que você desenha: chave de partição no Kafka, message group no SQS FIFO ou fila única com um consumidor no RabbitMQ.

# Kafka: tópico com chave de ordenação por pedido
kafka-topics.sh --create --topic pedidos \
  --partitions 6 --replication-factor 3 \
  --bootstrap-server broker:9092

# Produtor: use order_id como key para manter a ordem por pedido

O melhor message broker é o que sua equipe consegue operar, monitorar e depurar às três da manhã. Kafka self-hosted cobra dedicação de time, enquanto serviços gerenciados trocam controle por conveniência. Para enxergar essa escolha dentro de um contexto maior de mercado, leia também Tendências do Mercado de TI: Como Antecipar Movimentos e Enriquecer.

Conclusão

Kafka é a escolha para eventos duráveis e reprocessáveis, RabbitMQ para roteamento e filas de trabalho, e SQS para simplicidade operacional na AWS. Antes de fechar a decisão sobre o message broker, faça uma prova de conceito com seu padrão real de mensagens, incluindo falhas, reentregas e picos de carga. É esse teste, e não um comparativo genérico, que mostra qual stack sustenta seu produto com o menor custo de operação.

Contato

Envie uma mensagem

Entre em contato