Kafka consumer fails to consume if first broker is down
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. Initially conceived as a messaging queue, Kafka is based on an abstraction of a distributed commit log. Since being open-sourced by LinkedIn in 2011, it has become one of the key components in data architectures around the world.
Understanding the Architecture
Kafka operates on a cluster of one or more servers (nodes), where each node is either a broker or a zookeeper. Brokers are responsible for maintaining published data. Each broker can handle terabytes of messages without performance impact. Zookeeper, on the other hand, manages and coordinates Kafka brokers. It keeps the list of Kafka topics and partitions and the list of brokers that own the partitions.
Consumer Behavior in Kafka
Kafka consumers read data from topics. To manage scale, topics are split into partitions, and each partition can be hosted on a different broker. This parallelism offers high throughput. Consumers label themselves with a consumer group name, and each record published to a topic is delivered to one consumer instance within each subscribing consumer group.
Issues When the First Broker is Down
Brokers in Kafka are typically numbered with an ID starting from zero. When a consumer tries to read a partition, it must first find out which broker hosts which partition. It does this by querying one of the brokers, which provides it with metadata about where each partition resides, along with which broker is currently the leader for which partition (as only the leader handles read and write requests for a partition).
Scenario When First Broker is Down
If the first broker (Broker 0) is down:
- Consumer Metadata Query Fails: Initially, if the consumer tries to query the down broker for metadata, the request fails.
- Potential Delay in Metadata Update: Even if the consumer queries another available broker, there might be a delay in reflecting the updated broker status and leader election in metadata due to the down state of the first broker.
This disruption occurs primarily due to the configured bootstrap.servers in the consumer’s configuration. This property typically lists the brokers that the consumer should contact to find all the available brokers in the cluster and to get metadata about them. If the first broker listed is down, the metadata fetch operation initially fails, causing delays.
Example Configuration Issue and Resolution
Issue:
In this configuration, if broker0 (Broker 0) is down, the consumer will not successfully connect to the Kafka cluster until it times out and tries broker1 or broker2.
Resolution: To mitigate this issue, users should:
- Ensure the consumer retries with backoff in case of a failure in connecting to the first broker.
- Configure the consumer with multiple broker addresses, so it doesn’t rely solely on the availability of the first broker.
- Monitor and manage broker health actively to execute a broker restart or reassignment swiftly.
Kafka Internal Mechanisms and Recommendations
Kafka has internal mechanisms to handle failures:
- Automatic Broker Detection: Upon failing to connect to the first broker, the Kafka client will automatically try the next broker listed in
bootstrap.servers. - Leader Election: Kafka automatically performs leader election for partitions when a broker goes down, ensuring another leader is ready to serve data.
Summary Table of Key Points
| Issue Component | Problem | Impact | Recommended Solutions |
| First Broker Down | Metadata query fails initially; Delays in consuming messages | Increased latency in message consumption | Use multiple brokers in bootstrap.servers, implement retry mechanisms, monitor broker health |
| Reliance on Single Broker | Single point of failure at initial connection | Consumer may experience significant delays or failures in establishing a session | List multiple brokers and use robust error handling and reconnection strategies |
Additional Considerations
- Consumer and Broker Version Compatibility: Ensure compatibility as older consumer clients might not support certain failover mechanisms effectively.
- Network Configuration and Security: Proper network configurations and security settings ensure that consumers can reliably connect to alternates if the primary broker is unavailable.
Migration to newer Kafka versions or configurations with enhanced resilience capabilities can safeguard against these issues and ensure high availability and reliability in consuming Kafka streams.
Related reading
- Kafka consumer fetching metadata for topics failed
- Kafka consumer fetching topic metadata for topics from broker [ArrayBuffer(id0,hostuser-Desktop,port9092)] failed
- Kafka consumer for multiple topic
- Kafka Consumer get assigned partitions for a specific topic
- Kafka consumer gets stuck after exceeding max.poll.interval.ms
- Kafka consumer group keep moving to PreparingRebalance state and stops consuming
- kafka consumer group is rebalancing
- Kafka consumer group offset retention

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.