Message Queues¶
Message queues enable asynchronous, decoupled communication between services. A producer sends messages to a queue, a consumer processes them later. Key benefits: decoupling, load leveling, fault tolerance. Popular options: RabbitMQ (AMQP, routing), Apache Kafka (distributed log, high throughput), Amazon SQS (managed). Know Pub/Sub vs Point-to-Point, and at-most-once vs at-least-once vs exactly-once delivery.
Key Concepts¶
Deep Dive: Point-to-Point vs Pub/Sub
Point-to-Point (Queue):
Each message consumed by ONE consumer. Good for task distribution.Pub/Sub (Topic):
Each message delivered to ALL subscribers. Good for event broadcasting.Deep Dive: Kafka vs RabbitMQ
| Feature | Kafka | RabbitMQ |
|---|---|---|
| Model | Distributed log | Message broker |
| Ordering | Per partition | Per queue |
| Retention | Configurable (days/weeks) | Until consumed |
| Throughput | Very high (millions/sec) | Moderate (thousands/sec) |
| Replay | Yes (re-read messages) | No (once consumed, gone) |
| Routing | Basic (topics + partitions) | Advanced (exchanges, routing keys) |
| Best for | Event streaming, logs | Task queues, RPC |
Kafka architecture:
Deep Dive: Delivery Guarantees
| Guarantee | Description | Use Case |
|---|---|---|
| At-most-once | May lose messages. No retries. | Logging, metrics |
| At-least-once | May duplicate. Retry on failure. | Most applications |
| Exactly-once | No loss, no duplicates. Hard to achieve. | Financial transactions |
At-least-once + idempotency is the most practical approach:
Deep Dive: Common Use Cases
- Order processing: User places order → Queue → Payment service processes
- Email/notifications: User action → Queue → Email service sends async
- Event sourcing: All state changes stored as events in log
- Data pipelines: Kafka ingests → Stream processing → Data warehouse
- Rate leveling: Absorb traffic spikes, process at steady rate
Common Interview Questions
- What is a message queue? Why use one?
- What is the difference between Kafka and RabbitMQ?
- What is Pub/Sub vs Point-to-Point?
- What are delivery guarantees?
- How do you handle duplicate messages?
- What is event sourcing?
- When would you use Kafka vs SQS vs RabbitMQ?
- How does Kafka achieve high throughput?