Kafka Messages Not Consumed: What to Check First
Dev
Last updated on

Kafka Messages Not Consumed: What to Check First


When Kafka messages are produced but not consumed, the right first question is not “should I reset offsets?” It is “is this consumer group actually assigned, polling, and advancing offsets the way I expect?” Teams often jump to offsets because it feels concrete, but many incidents are really about assignment, poll loops, or rebalance churn.

This guide starts with the fastest checks first: confirm the group is healthy, confirm consumers are assigned partitions, and confirm the consumer loop is actively polling instead of appearing alive while doing no useful work.


Check whether the consumer group is actually working

At a practical level, messages not consumed often means one of these:

  • no consumer is assigned the partition
  • the consumer group is unstable
  • the consumer is alive but not polling
  • offsets are not where you think they are

That means group state is a better first check than application logs alone.

Confirm partition assignment

Kafka consumers do useful work only after they are assigned partitions.

If messages are being produced but the consumer sees nothing, ask:

  • is the topic correct?
  • does the group have active members?
  • are partitions assigned to those members?
  • is one consumer idle because another member owns the relevant partition?

Without partition assignment, the consumer can look healthy while doing nothing.

Check poll behavior before offset logic

Kafka consumer configs make poll() behavior central to the consumer lifecycle.

That means a stuck consumer often falls into one of these patterns:

  • it joins the group but stops polling
  • it polls too slowly and rebalances
  • it spends too much time in downstream processing
  • it fails before commits or offset progress

If the group looks unstable, the follow-up guide on Kafka Consumer Lag Increasing is the next place to look.

If the broader pattern looks like queue backlog rather than partition assignment trouble, RabbitMQ Consumers Not Receiving Messages is a useful cross-broker comparison.

Offsets can explain not consumed without proving the app is healthy

Offsets matter, but they are not the whole story.

Common cases:

  • the consumer is already past the records you expected to see
  • auto.offset.reset behavior does not match your assumption
  • another consumer group is reading the topic, but this one is not
  • the app commits offsets after partial work and the records are no longer re-read

That is why messages exist and this consumer will read them now are not the same statement.

Common causes

1. No partition assignment

The consumer group is empty, unstable, or assigned elsewhere.

2. Poll loop is not advancing

The process is running but not behaving like an active consumer.

3. Offset expectations are wrong

The group is at a different position than the operator expects.

4. Rebalances keep interrupting progress

The consumer repeatedly restarts useful work.

A practical debugging order

  1. confirm the topic is receiving records
  2. inspect consumer group membership and assignment
  3. inspect whether the consumer loop is polling
  4. inspect offset position and commit behavior
  5. inspect rebalance frequency and processing latency

That order usually explains the problem faster than jumping straight to offset resets.

A quick branch that saves time

Use this shortcut when producers are active but one group sees nothing:

  • no members or no assignment: start with group state
  • members exist but offsets do not move: start with poll behavior
  • offsets are already advanced: start with offset expectations
  • assignment repeatedly changes: start with rebalance churn

That branch is usually safer than treating every incident like an offset reset problem.

Symptom shortcut

  • Start here if producers are writing but this consumer group does not seem to consume anything.
  • If consumers do make progress but lag keeps rising, the lag guide is the better first stop.

Quick commands

kafka-consumer-groups.sh --bootstrap-server <broker:9092> --group <group> --describe
kafka-consumer-groups.sh --bootstrap-server <broker:9092> --list
kafka-topics.sh --bootstrap-server <broker:9092> --describe --topic <topic>

Use these to confirm the group exists, partitions are assigned, and offsets are actually moving on the topic you expect.

Look for empty groups, no partition assignment, and current offsets that never advance even while producers keep writing.

FAQ

Q. If producers are working, why can consumers still see nothing?

Because topic production, group assignment, and offset position are separate parts of the flow.

Q. Should I reset offsets first?

Only after you know whether the group state and partition assignment are already correct.

Q. What should I check first?

Check group membership, partition assignment, poll behavior, and current offset position.

Sources:

Start Here

Continue with the core guides that pull steady search traffic.