Kafka get to know when related messages are consumed
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Apache Kafka is a distributed event streaming platform capable of handling trillions of events a day. Initially conceived as a messaging queue, Kafka is based on an abstraction of a distributed commit log. Since it deals with streams of records, understanding when related messages are consumed is crucial for designing robust, scalable, and reliable systems.
Understanding Kafka Consumers
Kafka consumers read data from topics. Topics in Kafka are split into partitions - this partitioning allows for the data to be consumed in parallel, enhancing throughput. Each partition is an ordered, immutable sequence of records that is continually appended to. Consumers track their position in each partition with an offset, which signifies the next record to read.
Consumer Groups and Offset Management
Multiple consumers can form a group and share the task of reading records from different partitions in a topic. Kafka manages balance and coordination automatically: if a new consumer joins the group, Kafka reassigns partition ownership, and similarly if a consumer fails. Each consumer group maintains its offset per partition.
Techniques to Know When Messages are Consumed
1. Offset Committing
Offset committing is the act of recording the position (offset) up to which a consumer has processed records in a partition. Offsets are committed to a Kafka topic named __consumer_offsets. By committing offsets, consumers can pick up processing from the point they left off even after failures.
Example:
Imagine a consumer processes records up to offset 100 in a partition and commits this offset to Kafka. If this consumer restarts, it continues processing from offset 101 onward, ensuring no message is processed twice.
2. Monitoring Lag
The consumer lag is a critical metric that indicates how far behind a consumer group is from the head of a log (the latest records). It's calculated as the difference between the last produced offset and the last committed offset by a consumer group for a specific partition.
Monitoring lag helps in understanding:
- The performance of consumers — whether they are consuming messages as fast as they are produced.
- Potential delays in processing that could affect downstream systems.
3. Kafka's Time-Based Index
Kafka allows fetching records based on their timestamps. This can be crucial when systems need an understanding of data based not just on offset but on when it was actually published (or another logical time).
Example:
A consumer could seek to the first message after 03:00 AM UTC because of a system restart or for filtered analysis of data generated after specific events or times.
Tools and Utilities
Several Kafka third-party utilities and Kafka APIs help in finding out message consumption details:
- Kafka Consumer API: Allows programmatically controlling consumers, managing offsets, and querying data by time or offset.
- Confluent Control Center and Kafka Manager: Provide user interfaces for monitoring consumers, viewing lag, and more.
- Open Source Tools like Burrow: Provide detailed monitoring and alert features for Kafka consumer lag.
Summary Table for Key Concepts
| Key Concepts | Description |
| Consumer Group | Consumers that jointly process partitions of a Kafka topic. |
| Offset Committing | Act of saving the position up to which a consumer has read. |
| Consumer Lag | Indicates how behind a consumer group is in processing data. |
| Time-Based Indexing | Allows for message retrieval based on timestamps. |
Conclusion
Understanding the consumption status of messages in Kafka is vital for building effective streaming applications. Techniques such as offset committing, monitoring lag, and utilizing time-based indexes are critical. With these approaches, developers can achieve detailed insight into their stream processing systems, ensuring data is consumed as intended and systems maintain high performance and reliability.
This capability to track when and how messages are consumed makes Apache Kafka an extremely powerful tool for handling large-scale, real-time data in a diverse range of applications from analytics to real-time monitoring and event-driven architectures.
Related reading
- Kafka Getting error No resolvable bootstrap urls given in bootstrap servers
- Kafka GlobalKTable Latency Issue
- Kafka having duplicate messages
- Kafka High-level Consumer error_code=15
- Kafka how to consume one topic parallel
- Kafka how to set producer retries to Infinity
- Kafka High Level Consumer Fetch All Messages From Topic Using Java API (Equivalent to --from-beginning)
- Kafka High Level Vs Low level consumer

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.