The moment something clicks with Kafka, it usually isn't after reading the documentation. It's after you stop trying to map it onto something you already know.
Most developers come to Kafka from a background with RabbitMQ, SQS, or some other traditional message broker. That prior experience is actually the obstacle. Because Kafka looks like a queue on the surface, you point producers at it, consumers read from it, messages flow through. But the underlying model is completely different, and until you internalize that difference, a lot of Kafka's behavior feels arbitrary or over-engineered.
The Core Difference: Deletion vs. Retention
In a traditional queue, a message exists to be consumed and then discarded. RabbitMQ deletes the message once a consumer acknowledges it. SQS does the same. The queue is a temporary holding area, not a record of what happened.
Kafka treats messages as log entries. When a producer writes an event, Kafka appends it to a partitioned, ordered log and keeps it there, for hours, days, or indefinitely depending on your retention configuration. Consumption doesn't trigger deletion. The log just keeps growing.






