Kafka vs RabbitMQ vs SQS: Message Bus Tradeoffs
Message bus choice depends on what you mean by ‘messaging.’ Stream, queue, or pub-sub all map to different tools.
Kafka: streaming, retention
Kafka: high-throughput; ordered partitions; long retention; replay-friendly.
Best for: event streams, analytics pipelines, log aggregation, anything you might want to replay.
RabbitMQ: queues, routing
- RabbitMQ: queues; routing rules; selective consumption; lower-throughput but flexible.
- Best for: task queues, work distribution, complex routing topologies.
SQS: managed simplicity
SQS: AWS-managed; simple; near-zero ops; standard or FIFO.
Best for: simple async tasks where you just want a queue and to skip the ops.
The dual-bus pattern
Many teams: Kafka for events that other systems consume; SQS for tasks one service produces and another consumes.
Each at the right scale. No overlap if you scope by purpose.
Antipatterns
- Kafka for simple async tasks. Operational overhead exceeds value.
- RabbitMQ for analytics streams. Throughput limit; replay weak.
- SQS with throughput beyond limits. Hits soft caps; degraded mid-quarter.
What to do this week
Three moves. (1) Run a 30-day trial of the candidate against your real workload. (2) Compare TCO + workflow fit, not just feature checklists. (3) Decide and commit; running both in parallel is the most expensive option.