Fila de tarefas, fan-out de pub/sub, streaming de eventos e request-reply são problemas diferentes. Escolher a ferramenta pela marca antes de nomear o problema custa caro em migração e em conta mensal. A comparação abaixo percorre Kafka, RabbitMQ e SQS pelos critérios que decidem produção: throughput, ordenação, custo operacional e o caso de uso da sua event-driven architecture.

Kafka: log distribuído com replay

O Kafka guarda eventos num log distribuído que consumidores podem reler desde o início, e consumer groups escalam ao somar membros. Throughput na casa das centenas de milhares de mensagens por segundo em clusters modestos. O preço aparece na operação: brokers, partições, rebalances e retenção exigem dedicação, mesmo rodando no MSK ou Confluent. Encaixa em event sourcing, pipelines de analytics e broadcast para vários consumidores independentes.

RabbitMQ: broker esperto para filas de trabalho

O RabbitMQ aposta num broker com roteamento rico: topic exchanges filtram por padrão de chave, dead-letter exchanges capturam mensagens rejeitadas, prioridades reordenam entregas, quorum queues replicam estado entre nós. Cobre dezenas de milhares de mensagens por segundo com folga e resolve filas de tarefas com topologia complexa usando menos peças que um cluster Kafka.

SQS: fila sem servidor dentro da AWS

O SQS cobra por mensagem, escala sozinho e não exige uma hora de operação. Limites conhecidos: 256KB por mensagem, delay máximo de 15 minutos, preço na faixa de centavos por milhão de requisições. Filas FIFO adicionam ordenação estrita com tetos de throughput (300 req/s por padrão, até 3.000 com batching). Equipe AWS-native ganha infraestrutura de fila sem administrar nada.

Ordenação: o detalhe que derruba designs

O Kafka garante ordem dentro de cada partição, então a chave de partição decide tudo: pedidos particionados por customer_id preservam sequência por cliente. O RabbitMQ também abandona ordenação global sob consumers concorrentes. Projete consumidores idempotentes em qualquer ferramenta; ordenação de infraestrutura otimiza, idempotência corrige.

Custo operacional lado a lado

  • Kafka gerenciado (MSK, Confluent): parte de cerca de $200+/mês pelo cluster mínimo
  • RabbitMQ self-hosted: instância barata, mas HA, failover e upgrades entram no seu backlog
  • SQS: preço por mensagem, escala a zero quando o tráfego some, zero servidores para cuidar

Ponto de partida e momento de migrar

Comece com SQS se o time vive na AWS, ou RabbitMQ se roteamento rico importa fora dela. Migre para Kafka quando replay de histórico, múltiplos consumidores independentes ou 100k+ msg/s virarem requisito real. Time pequeno com fila de jobs quase nunca precisa de cluster próprio; precisa de fila confiável e observabilidade decente.