systemdesign/concepts distributedsystem/microservice/messagequeue
Message Queues
Brokers help two service / Applications communicate through messages.
We use Message Broker when we want to do something asynchronously.

Features

Message Streams
Message streams are similar to message queues with few differences to understand.


Message streams are similar to message brokers with one change: Multiple types of consumers read the same message

Message Queues vs Message Streams

| Feature | Message Queue (Broker-style) | Message Stream (Kafka-style) |
|---|---|---|
| Delivery Model | Point-to-point (1 consumer per msg) | Publish-subscribe (many consumers can read same message) |
| Message Consumption | Message is removed after consumption | Message is retained and replayable |
| Retention | Until consumed | Configurable (time-based or size-based) |
| Ordering | Usually FIFO per queue | Strict order within each partition |
| Replay Support | ❌ No | ✅ Yes (by offset) |
| Use Case | Task queue, background jobs | Event sourcing, log aggregation, analytics |
| Examples | RabbitMQ, SQS | Kafka, Pulsar, Redpanda |