Decision guide
Kafka vs RabbitMQ vs SQS vs Redis Streams
Which message broker fits your workload?
Side by side
| Criterion | Kafka | RabbitMQ | SQS / SNS | Redis Streams |
|---|---|---|---|---|
| Model | Log | Queues + exchanges | Queue + pub/sub | Log in memory |
| Replay | Yes | Limited | No | Until trimmed |
| Ordering | Per partition | Per queue | FIFO per group (FIFO queues) | Per stream |
| Per-message ack/retry | Offsets (batch) | Yes | Yes (visibility timeout) | Yes (PEL) |
| Delays / priorities | No | Yes | Delay ≤ 15 min | Manual |
| Ops burden | High (unless managed) | Medium | None | Low |
| Throughput | Very high | High | Very high (standard) | High |
When to choose each
Kafka
Partitioned, replicated, replayable log.
Choose when
- Event streaming between many services
- Replay and long retention
- Very high throughput
Avoid when
- Priority/delayed job queues
- Small teams without managed Kafka
RabbitMQ
Broker with exchanges, queues, per-message acks.
Choose when
- Task queues with routing
- Priorities, TTLs, dead-letter exchanges
Avoid when
- Replaying history
- Massive fan-out streams
SQS / SNS
Fully managed queues and fan-out (AWS).
Choose when
- Decoupling on AWS with zero ops
- Background jobs at any scale
Avoid when
- Replay
- Strict ordering at high throughput (FIFO limits)
Redis Streams
Append-only streams in Redis with consumer groups.
Choose when
- Lightweight streams where Redis already runs
- Low latency
Avoid when
- Large retained histories (memory)
- Strong durability needs without AOF tuning
Verdict
Use Kafka (managed if possible) for event streams and replay, RabbitMQ or SQS for job/task queues, and Redis Streams for lightweight cases when Redis is already core infrastructure. Many architectures combine a stream for events with queues per consumer.
Learn more
- Messaging, Events and Email Systems
- Queues & Background Processing in Depth
- Messaging & Queues
- Run background jobs from FastAPI with ARQ (FastAPI)
- Process background jobs with BullMQ (Node.js)
- Consume Kafka messages with retries and a dead-letter topic (Spring Boot)