# 15,000 GPS pings a second. Do not put that in a queue.

> Partitions, offsets and the reason four teams can read the same event.

- **Format:** short video, 10 steps, ~32 seconds
- **Topic:** Azure Event Hubs — why 60,000 drivers reporting GPS every four seconds belongs in a partitioned event stream and not in a queue.
- **Author:** Suthahar Jegatheesan (MSDEVBUILD)
- **Category:** Azure · Azure
- **Tags:** azure, azureeventhubs, eventhubs, eventstreaming, servicebus, systemdesign, microsoftazure, azurecloud, cloudarchitecture, dataengineering, kafka, az305, msdevbuild
- **Canonical URL:** https://blog.msdevbuild.com/shorts/azure-event-hubs-driver-pings/

---
## What you'll learn

- Why a queue cannot hand the same event to four teams
- How a partition key keeps one driver’s pings in order
- How consumer groups and offsets let a slow reader catch up

## Understand it one step at a time

### 1. 60,000 drivers. Every 4 seconds

Every car reports where it is. Nobody asked for a reply, and nothing needs a lock.

### 2. 1.3 billion pings a day

Each one is a few hundred bytes, and each one is worthless four seconds later.

### 3. A queue is the wrong tool

Four teams need the same ping. A queue hands each message to exactly one consumer, then deletes it.

### 4. Fix: Azure Event Hubs

Not a mailbox — an append-only log. Producers append, and nothing is handed out or removed.

### 5. One log, split into partitions

The partition key hashes to a lane. Every ping from one driver lands in the same lane, in order.

### 6. Reading doesn't delete

Each consumer group keeps its own offset over the same events. Four teams, one copy of the data.

### 7. A slow reader can't hurt the rest

fraud-scan is 41 seconds behind. The live map is still at the head, and no event was dropped.

### 8. Replay yesterday, no re-ingest

A new team rewinds to an old offset inside the retention window and reads the same events again.

### 9. Queue vs stream

One is a job to be done and destroyed. The other is a fact to be read by anyone, twice if needed.

### 10. Commands queue. Facts stream

“Charge this card” belongs in a queue. “Driver moved here” belongs in a log everyone can read.

---

## The takeaway

**Queues move work. Streams move facts.**

If more than one team needs the same event, you did not want a queue.
