ulearn/systems

topics / async-messaging

RabbitMQ vs Kafka

Smart broker vs. dumb log — not a benchmark, a difference in what each one actually does at runtime. Watch the same published event get pushed to a worker and deleted on ack on one side, while it sits in a log getting pulled by independent consumer groups on the other. Then use Match to score a workload's traits, or Study for the full scenario-by-scenario reasoning.

New here? This page assumes the vocabulary below — hover any underlined word for a quick definition, orstart with Study →
0RabbitMQ acked (deleted)
0RabbitMQ waiting
0Kafka log size
0Kafka evicted (retention)
messageackedlog entrythis group's offsetother group's offsetevictedRabbitMQ — push, delete on ackproducerqueue · 0 waitingW0idleW1idleKafka — pull, retain until evictionproducerlog · retains last 10Group A · offset 0

Shared event stream

Every event published here happens on both sides at once — same event, different fate.

RabbitMQ — push

The broker hands each queued event to the first free worker. Once a worker acksit, it's deleted — for good.

Kafka — pull

Nothing here is ever deleted by a read. A new group starts from the oldest event still in the log — try adding one mid-run.