- Topic
- The named destination producers publish to and consumers read from. Kafka/NSQ call it a topic; NATS calls it a subject; RabbitMQ routes to it via an exchange.
- Consumer group
- An independent unit of consumption — its own copy of the stream and its own progress. Kafka: consumer group · NSQ: channel · RabbitMQ/AWS: a queue.
- Partition
- Kafka’s unit of ordering and parallelism. A topic is split into partitions; each is read in order by at most one worker per group, so max workers = partition count.
- Offset
- A consumer’s bookmark in a Kafka partition. Commit it to mark progress; rewind it to replay old messages.
- Ordering
- Whether messages arrive in the order they were sent. Usually guaranteed only within a partition (Kafka), one queue (RabbitMQ), or one SQS FIFO MessageGroupId.
- FIFO
- First-in, first-out — strict order. SQS FIFO queues and single RabbitMQ queues preserve it; “standard” / best-effort modes may not.
- Backlog
- Messages that have arrived but aren’t processed yet — the queue’s depth. A growing backlog means consumers are falling behind.
- Backpressure
- When the backlog grows, the system slows or buffers producers instead of dropping data — pressure pushing back upstream.
- Fan-out
- Delivering one published message to many independent consumer groups at once.
- Push
- The broker sends messages to consumers as they arrive (RabbitMQ, NSQ, SNS). Flow is capped by prefetch / RDY so a consumer isn’t flooded.
- Pull
- Consumers ask for messages when they’re ready (Kafka, SQS, JetStream pull) — they set their own pace.
- Fire-and-forget
- Send a message and don’t wait for confirmation or store it — fast, but with no delivery guarantee and no replay. Core NATS pub/sub works this way; add JetStream when you need durability.
- RDY
- NSQ’s flow-control signal: a consumer advertises how many messages it can take, and nsqd pushes up to that many.
- Prefetch
- RabbitMQ’s cap on how many unacknowledged messages a consumer may hold at once — its backpressure knob.
- Dead letter
- Where a message goes after too many failed deliveries, so it doesn’t block the queue. AWS/others: a DLQ; RabbitMQ: a dead-letter exchange (DLX).
- Visibility timeout
- SQS’s retry window: a received message is hidden for a set time; if it isn’t deleted (acked) in time, it reappears for redelivery.
- Replay
- Re-reading past messages. Log-based systems (Kafka offsets, JetStream by seq/time) replay easily; once-delivered queues generally can’t.
- Stream
- NATS’ persistent layer: a stream stores the messages on its subjects, giving consumers durability, acks, and replay.
- Ack
- Acknowledgement — a consumer confirming it processed a message. A Nak or timeout (AckWait) triggers redelivery; MaxDeliver caps the attempts.
- At-least-once
- A delivery guarantee: a message is redelivered until the consumer acknowledges it, so it may arrive more than once (a crash right before the ack, a timeout). The default for durable brokers — pair it with idempotent handlers.
- At-most-once
- A delivery guarantee: a message is delivered zero or one time, never retried — fast and cheap, but lost if no consumer is listening or the consumer fails. Core NATS works this way.
- Idempotency
- Writing a handler so processing the same message twice has the same effect as once — upsert by a stable key, or dedupe on a message id. The standard cure for at-least-once duplicates.
- FIN / REQ
- NSQ’s per-message acknowledgements: FIN (finish) permanently removes a message; REQ (requeue) sends it back to be delivered again. A message with no FIN before its msg_timeout is auto-requeued.
- Ephemeral
- A short-lived, auto-cleaned resource — the cure for an orphaned queue that would otherwise leak memory + disk. An NSQ channel/topic suffixed #ephemeral is memory-only and deleted when its last consumer disconnects; NATS ephemeral consumers vanish after an inactivity threshold; RabbitMQ auto-delete / exclusive queues drop when their consumer or connection goes.
- Exchange
- RabbitMQ’s router: producers publish to an exchange, which copies each message to the queues bound to it (see exchange types).
- Direct / topic / fanout
- RabbitMQ exchange types — how an exchange picks target queues. Direct: deliver to queues whose binding key exactly matches the message’s routing key. Topic: match routing keys against wildcard patterns (e.g. orders.*.eu). Fanout: ignore keys entirely and copy to every bound queue.
- Queue
- A buffer holding messages for competing consumers to share. In RabbitMQ/SQS the queue is also the boundary of one independent consumer group.
- Concurrency
- How many workers run at once. In AWS this is Lambda concurrency — more concurrency, more messages processed in parallel.