Learning Kafka

If RabbitMQ is a kitchen ticket rail — take an order, finish it, move on — Kafka is more like a security camera recording that never stops.

Events get appended to a log. Anyone can come back later and watch from wherever they left off. Nothing disappears just because someone already read it.

I am learning Kafka separately. When a project actually needs that “recording” model, I want to recognize it early — not after the team has already built the wrong thing.

The simple idea

Queue mindset: deliver a task, mark it done, gone.

Log mindset: record what happened, keep the tape, let many readers catch up at their own speed.

flowchart TB
  subgraph queue["Queue style — task is done and gone"]
    Q1[Job] --> W[Worker finishes]
    W --> X[Job removed]
  end

  subgraph log["Log style — history stays"]
    E1[Event] --> L[Append to log]
    L --> R1[Reader A at their pace]
    L --> R2[Reader B at their pace]
    L --> R3[Reader C rewinds and replays]
  end

That replay part is the superpower. Need to rebuild a dashboard from last Tuesday? Re-read the log. New service wants the same stream of facts? Attach another reader — you do not re-send everything by hand.

When Kafka fits

Good fits:

  • Audit trails — “show me everything that happened to this account”
  • Analytics pipelines — many teams reading the same firehose of events
  • Systems that need rewind — new app version replays history to warm up

Less ideal when you just want one worker to pick up the next job and ack it. That is queue territory — RabbitMQ, SQS, etc.

Neither is universally better. They answer different questions.

flowchart LR
  P[Producer writes events] --> K[Kafka log]
  K --> C1[Consumer group A]
  K --> C2[Consumer group B]
  K --> C3[New service replays from start]

Consumer group — fancy term for “a team of readers sharing the load.” Each group tracks its own progress through the tape.

How I am learning

This one is background depth for now — reading, local experiments, comparing feel to queue-based patterns I am already learning.

When a problem needs durable history or multiple independent readers, that is my cue to go deeper.

Hands-on lab: Event Patterns — RabbitMQ and Kafka running side by side so I can see the difference instead of reading about it.

Where this goes

I want to walk into design chats and know which shape fits: hand off a task vs. preserve a story. And I want to understand terms like partitions and offsets well enough to ask good questions — not nod along.

That is it. No rush. This track turns on when the problem needs a recording, not a ticket.