Consider a Kafka topic with 3 partitions and a consumer group with 2 consumers. Each consumer reads messages from assigned partitions. If the topic has 9 messages evenly distributed, how many messages will each consumer receive?
Topic partitions: 3 Messages per partition: 3 Consumers in group: 2 # Messages are evenly distributed across partitions. # Consumers get assigned partitions evenly or as balanced as possible.
Partitions are assigned to consumers. Each partition's messages go to one consumer only.
With 3 partitions and 2 consumers, one consumer gets 2 partitions (6 messages) and the other gets 1 partition (3 messages). So one consumer reads 6 messages, the other 3.
In Kafka, when a new consumer joins a consumer group that is already consuming from a topic, what is the expected behavior?
Think about how Kafka ensures each partition is consumed by only one consumer in the group.
When a new consumer joins, Kafka triggers a rebalance to redistribute partitions evenly among all consumers in the group.
Given a topic with 2 partitions and a consumer group with 3 consumers, one consumer is not receiving any messages. Here is the consumer group assignment log snippet:
Consumer 1 assigned partitions: 0, 1 Consumer 2 assigned partitions: Consumer 3 assigned partitions:
Why is Consumer 3 not receiving messages?
Consider how Kafka assigns partitions when consumers outnumber partitions.
Kafka assigns partitions so that each partition is consumed by only one consumer. If there are more consumers than partitions, some consumers get no partitions.
Consider this Kafka consumer group code snippet in Java:
Properties props = new Properties();
props.put("group.id", "my-group");
props.put("bootstrap.servers", "localhost:9092");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList("my-topic"));
while(true) {
ConsumerRecords records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord record : records) {
System.out.println(record.value());
}
}
consumer.close(); What error will this code produce?
Look at the infinite loop and the position of consumer.close().
The infinite while(true) loop makes consumer.close() unreachable, causing a compilation error (unreachable statement).
A Kafka topic has 7 partitions. A consumer group has 4 consumers. After a rebalance, how many partitions will each consumer be assigned?
Partitions are distributed as evenly as possible among consumers.
7 partitions divided among 4 consumers means three consumers get 2 partitions each (2*3=6) and one consumer gets 1 partition (1*1=1), totaling 7.