contentintech

Message Queues Cheatsheet

Quick reference for delivery semantics, ordering, DLQs, retries, and broker comparison.

KafkaDeliveryIdempotencyDLQ
NotesCheatsheet

Topology

Producer --msg--> [ Broker: queue/topic/log ] --> Consumer(s)
                   durable buffer, retries, fan-out
ModelDelivery
QueueEach msg to ONE consumer
Pub/SubEach msg to EVERY subscriber
LogRetained; consumers track offset, replay

Delivery Semantics

GuaranteeRisk
At-most-onceMay lose
At-least-onceDuplicates (default)
Exactly-onceHard; use idempotency
# idempotent consume
if seen.has(msg.id): return
with tx: apply(msg); seen.add(msg.id)   # UPSERT, not INSERT

Ordering & Backpressure

OrderingPer-partition/key only; global is costly
ParallelismCapped at partition count
BackpressureBounded queues, pull, autoscale on lag
Key metricConsumer lag

Retries & DLQ

delay = min(cap, base * 2^attempt) + jitter
1s -> 2s -> 4s -> 8s -> DLQ (alert, inspect, replay)
poison message = permanent failure -> DLQ, don't block queue

Patterns

Competing consumers: [queue]->C1/C2/C3  (scale throughput)
Fan-out:  [event] -> emailSub / indexSub / analyticsSub

Outbox (no dual-write bug):
BEGIN; update state; INSERT outbox; COMMIT;
relay/CDC tails outbox -> broker (at-least-once)

Kafka Terms

TopicNamed stream
PartitionOrdered shard; unit of parallelism
OffsetConsumer position; committed
Consumer group1 partition -> 1 member
CompactionKeep latest value per key
ISRIn-sync replica set

Broker Pick

SystemUse whenThroughput
KafkaStreams, replay, high volumemillions/s
RabbitMQRich routing, priorities, TTLtens of k/s
SQS/SNSZero-ops managed AWSnear-unbounded
NATSUltra-low latency, tinymillions/s

Section navigation