Kafka consumer for multiple topic
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 streaming platform capable of handling trillions of events a day. Initiating as a simple messaging queue, Kafka is based on an abstraction of a distributed commit log. Since then, it has evolved to a full-fledged event streaming platform. One of the vital components in the Kafka ecosystem is the Kafka consumer, which reads data from Kafka.
Kafka Consumer Basics
A Kafka consumer reads records from a Kafka cluster. Consumers subscribe to a set of topics and processes the stream of records produced to them by the producers. In Kafka, consumers are typically part of a consumer group, which is a collection of consumers that jointly consume data from one or more topics.
When multiple consumers are subscribed to a topic, or a group of topics, Kafka distributes the data among these consumers by dividing the messages in partitions. For each partition, only one consumer will read the data, providing a way to parallelize consumption without duplication of data among consumers in the same group.
Consuming Multiple Topics
Consumers can subscribe to multiple topics at once and process them similarly as consuming from a single topic. This is useful in scenarios where the application logic needs to consume and potentially aggregate or compare data from multiple sources.
Example Code: Subscribing to Multiple Topics
Here's a simple example using Kafka's Java API to subscribe to multiple topics:
This code demonstrates how to initiate a Kafka consumer that is configured to consume from three topics simultaneously. The consumer polls for data every 100 milliseconds and prints out details about the records it has consumed.
Key Configuration Parameters
While configuring a Kafka consumer that subscribes to multiple topics, it is essential to provide configurations that manage its behavior effectively:
| Parameter | Description | Recommended Value |
bootstrap.servers | List of Kafka brokers to connect to | Varies based on deployment |
group.id | Unique identifier of the consumer group | Varies based on use case |
key.deserializer | Class used to deserialize the key of records | Depends on the key format |
value.deserializer | Class used to deserialize the value of records | Depends on the value format |
enable.auto.commit | If true, the consumer's offset will be periodically committed in the background | false for manual control |
auto.offset.reset | What to do when there is no initial offset in Kafka or the current offset does not exist any more | latest or earliest |
Challenges and Solutions
Handling multiple topics in a consumer raises challenges like data balancing across consumers, handling different data types efficiently, and managing offsets. Solutions to these problems can include careful planning of topic-partition strategy and consumer group design, configuring appropriate deserializers for different types of data, and using manual offset control to handle exact message processing semantics.
In conclusion, Kafka consumers are versatile in handling data from multiple topics efficiently. Proper planning and configuration are crucial to leverage the full potential of Kafka in complex multi-topic consumption scenarios.
Related reading
- Kafka Consumer get assigned partitions for a specific topic
- Kafka consumer gets stuck after exceeding max.poll.interval.ms
- kafka consumer group is rebalancing
- Kafka consumer group keep moving to PreparingRebalance state and stops consuming
- Kafka consumer group offset retention
- Kafka Consumer in C++
- Kafka consumer group script to see all consumer group not working
- Kafka consumer groups and partitions

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.