Vocabulary for Message Queue Systems: Queues, Topics, and Dead Letters
Essential English vocabulary for message queue systems: producers, consumers, topics, partitions, DLQs, backpressure, and how to use each term correctly in context.
Message queues let services talk to each other asynchronously — one service drops a message, another picks it up later. Kafka, RabbitMQ, SQS, and their cousins all share a dense vocabulary: producers, consumers, topics, partitions, dead-letter queues. Many of these words are metaphors that confuse non-native speakers. This guide explains the essential terms in context so you can read the docs and discuss queues fluently.
The fundamental roles
| Term | Meaning | In a sentence |
|---|---|---|
| Producer | Sends messages into the queue | ”The API is the producer.” |
| Consumer | Reads messages out | ”The worker is the consumer.” |
| Broker | The server that holds messages | ”Kafka brokers store the data.” |
| Message | A single unit of data | ”Each message is a JSON event.” |
The core verbs: producers publish, send, or enqueue messages; consumers consume, read, poll, or process them.
“The producer publishes an order event; the consumer polls the queue and processes each message.”
Queue vs topic
This distinction trips up many people.
- Queue — point-to-point; each message goes to one consumer (e.g. SQS, RabbitMQ queue)
- Topic — publish/subscribe; each message goes to all subscribers (e.g. Kafka topic, pub/sub)
“Use a queue when one worker should handle each job. Use a topic when multiple services each need a copy of the event.”
The two models are point-to-point vs publish/subscribe (pub/sub) — essential architectural vocabulary.
Ordering and partitioning
| Term | Meaning |
|---|---|
| Partition | A subdivision of a topic for parallelism |
| Offset | A message’s position in a partition |
| Ordering | Whether messages arrive in sequence |
| Partition key | Decides which partition a message goes to |
| Consumer group | A set of consumers sharing the work |
“Kafka only guarantees ordering within a partition. If you need orders processed in sequence per customer, use the customer ID as the partition key.”
The verb commit appears here: a consumer commits its offset to record how far it has read.
“If the consumer crashes before it commits the offset, it’ll reprocess those messages on restart.”
Delivery guarantees
These three phrases are critical and precise:
| Guarantee | Meaning |
|---|---|
| At-most-once | May lose messages, never duplicates |
| At-least-once | Never loses, may duplicate |
| Exactly-once | No loss, no duplicates (hard to achieve) |
“We use at-least-once delivery, so consumers must be idempotent — processing the same message twice must be safe.”
Idempotent (safe to repeat) is the word that makes at-least-once delivery survivable. Memorise it.
The dead-letter queue (DLQ)
When a message can’t be processed after several tries, it goes to a dead-letter queue — a holding area for failed messages.
| Term | Meaning |
|---|---|
| DLQ (dead-letter queue) | Where failed messages go |
| Poison message | A message that always fails |
| Redrive | Re-sending DLQ messages to retry |
| Retry / redelivery | Attempting again |
| Max retries | The limit before dead-lettering |
“After three failed attempts, the message is dead-lettered. We inspect the DLQ, fix the bug, then redrive the messages back to the main queue.”
A poison message (one that always fails and blocks processing) is vivid, common vocabulary.
“One poison message was blocking the whole partition — every retry failed, so nothing behind it could progress.”
Flow control vocabulary
| Term | Meaning |
|---|---|
| Backlog | A buildup of unprocessed messages |
| Lag | How far behind the consumer is |
| Backpressure | Slowing producers when consumers can’t keep up |
| Throughput | Messages processed per second |
| Drain | Process the backlog down to empty |
“Consumer lag is growing — the backlog is up to 50k. The consumers can’t keep up, so we need to either scale them out or apply backpressure on the producer.”
The verbs: a backlog builds up or piles up; you drain it down; lag grows or catches up.
“We scaled out the consumers and the backlog drained in twenty minutes — lag is back to zero.”
Phrases for queue discussions
- “Messages are piling up in the queue.”
- “The consumer fell behind during the spike.”
- “Let’s drain the DLQ and figure out why these failed.”
- “We’re dropping messages — the queue overflowed.”
- “Add more consumers to catch up on the backlog.”
“During the incident, the consumer fell behind and the backlog ballooned. Once we added workers, it caught up and the lag dropped to zero.”
Common mistakes
- Confusing queue and topic. Queue = one consumer per message; topic = all subscribers get it. Wrong choice means duplicated or missed processing.
- Saying “the queue is slow” vaguely. Be precise: “consumer lag is high” or “throughput dropped.”
- Forgetting “idempotent.” With at-least-once delivery, consumers must be idempotent. It’s not optional vocabulary.
- Mixing “publish” and “produce.” Both are fine, but “the producer publishes” is the cleanest pairing.
- Mispronouncing “queue.” It’s just /kjuː/ — “kyoo.” The “ueue” is silent.
Quick reference glossary
- Fan-out — one message delivered to many consumers
- Fan-in — many producers into one queue
- Acknowledge (ack) / nack — confirm / refuse a message
- Visibility timeout — how long a message is hidden while being processed
- Replay — reprocessing past messages from an offset
- Ordering guarantee — promise about message sequence
- Durable — messages survive a broker restart
“Make the queue durable so messages survive a restart, set a sensible visibility timeout so they’re not redelivered mid-processing, and ack only after successful processing.”
A mini-dialogue
A: “Why is the order service falling behind?”
B: “There’s a poison message in partition 3 — it keeps failing and blocking everything behind it.”
A: “Can we dead-letter it?”
B: “Yes — bump max retries down so it hits the DLQ faster. Then the backlog should drain and lag will catch up.”
Key takeaways
- Know the roles: producers publish, consumers poll/process, brokers store.
- Distinguish queue (point-to-point) from topic (pub/sub).
- With at-least-once delivery, consumers must be idempotent.
- Failed messages go to the DLQ; a poison message can block a partition.
- Watch lag and backlog; scale out consumers to drain and catch up.
Master this vocabulary and message-queue docs stop being cryptic — and your next “why is the consumer lagging?” conversation will be crisp and confident.