Bird
Raised Fist0
Kafkadevops~5 mins

Consumer configuration in Kafka - Commands & Configuration

Choose your learning style10 modes available
Introduction
Kafka consumers read messages from topics to process data. Consumer configuration sets how they connect, read, and manage message delivery to ensure smooth data flow.
When you want to control how fast your app reads messages from Kafka.
When you need to decide if messages are marked as read automatically or manually.
When you want to handle what happens if your consumer crashes and restarts.
When you want to group multiple consumers to share the work of reading messages.
When you want to set limits on how much data your consumer fetches at once.
Config File - consumer.properties
consumer.properties
bootstrap.servers=localhost:9092
key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
group.id=my-consumer-group
enable.auto.commit=false
auto.offset.reset=earliest
max.poll.records=500
session.timeout.ms=10000

bootstrap.servers: Kafka server address to connect.

key.deserializer and value.deserializer: How to convert message bytes to strings.

group.id: Consumer group name to share message reading.

enable.auto.commit: Whether to mark messages as read automatically.

auto.offset.reset: Where to start if no previous read position exists.

max.poll.records: Max messages to fetch in one request.

session.timeout.ms: Time to detect consumer failure.

Commands
Starts a Kafka consumer that reads messages from 'my-topic' from the beginning using the settings in consumer.properties.
Terminal
kafka-console-consumer --bootstrap-server localhost:9092 --topic my-topic --group my-consumer-group --from-beginning --consumer.config consumer.properties
Expected OutputExpected
This will print messages from 'my-topic' starting from the earliest available message. Example: Hello World Kafka message 1 Kafka message 2
→
--bootstrap-server - Specifies the Kafka server address to connect.
→
--topic - Specifies the topic to consume messages from.
→
--group - Sets the consumer group for load balancing and offset tracking.
→
--from-beginning - Starts reading messages from the earliest offset.
→
--consumer.config - Loads consumer configuration from a properties file.
Shows the status of the consumer group 'my-consumer-group', including offsets and lag.
Terminal
kafka-consumer-groups --bootstrap-server localhost:9092 --describe --group my-consumer-group
Expected OutputExpected
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID my-topic 0 15 20 5 consumer-1-12345-67890 /127.0.0.1 consumer-1
→
--bootstrap-server - Specifies the Kafka server address.
→
--describe - Shows detailed information about the consumer group.
→
--group - Specifies which consumer group to inspect.
Key Concept

If you remember nothing else from this pattern, remember: consumer configuration controls how your app reads, commits, and manages message delivery from Kafka topics.

Common Mistakes
Not setting 'group.id' in the consumer configuration.
Without a group ID, Kafka treats each consumer as independent, losing benefits of load balancing and offset tracking.
Always set a meaningful 'group.id' to enable consumer group features.
Leaving 'enable.auto.commit' as true when manual control is needed.
Automatic commits can cause message loss or duplicate processing if your app crashes before processing messages.
Set 'enable.auto.commit=false' and commit offsets manually after processing.
Not setting 'auto.offset.reset' when starting a new consumer group.
If no offset exists, the consumer may not read any messages or start from the latest, missing old data.
Set 'auto.offset.reset=earliest' to read from the beginning if no offset is found.
Summary
Create a consumer configuration file to control how your Kafka consumer reads and commits messages.
Use kafka-console-consumer with the --consumer.config flag to apply your settings.
Check consumer group status and lag with kafka-consumer-groups to monitor consumption.

Practice

(1/5)
1.

What is the purpose of setting group.id in Kafka consumer configuration?

easy
A. To specify the Kafka broker address
B. To define the message deserializer class
C. To identify the consumer group for coordinating message consumption
D. To set the maximum number of messages to fetch

Solution

  1. Step 1: Understand the role of group.id

    The group.id identifies the consumer group that the consumer belongs to, allowing Kafka to coordinate message consumption among multiple consumers.
  2. Step 2: Differentiate from other configurations

    Other options like broker address or deserializer do not relate to consumer group coordination.
  3. Final Answer:

    To identify the consumer group for coordinating message consumption -> Option C
  4. Quick Check:

    group.id = consumer group ID [OK]
Hint: group.id always sets the consumer group name [OK]
Common Mistakes:
  • Confusing group.id with broker address
  • Thinking group.id sets deserializer
  • Assuming group.id controls message fetch size
2.

Which of the following is the correct way to set the Kafka consumer's auto.offset.reset property to start reading from the earliest message?

easy
A. "auto.offset.reset" = "latest"
B. "auto.offset.reset" = "earliest"
C. "auto.offset.reset" = "none"
D. "auto.offset.reset" = "first"

Solution

  1. Step 1: Recall valid values for auto.offset.reset

    The valid values are "earliest", "latest", and "none". "earliest" means start from the oldest message.
  2. Step 2: Identify the value for reading from earliest

    Setting it to "earliest" makes the consumer read from the beginning if no offset is found.
  3. Final Answer:

    "auto.offset.reset" = "earliest" -> Option B
  4. Quick Check:

    earliest = start from oldest message [OK]
Hint: earliest means start from oldest message [OK]
Common Mistakes:
  • Using "first" which is invalid
  • Confusing "latest" with earliest
  • Setting "none" expecting to read messages
3.

Given the following Kafka consumer configuration snippet, what will be the output behavior when consuming messages?

props.put("enable.auto.commit", "false");
props.put("auto.offset.reset", "earliest");
props.put("group.id", "my-group");

Assuming this consumer starts fresh with no committed offsets, what happens?

medium
A. Consumer reads messages from the earliest offset but does not auto-commit offsets
B. Consumer reads messages from the latest offset and auto-commits offsets
C. Consumer throws an error due to missing deserializer configuration
D. Consumer reads messages from the earliest offset and auto-commits offsets

Solution

  1. Step 1: Analyze enable.auto.commit setting

    It is set to "false", so the consumer will not automatically commit offsets after reading messages.
  2. Step 2: Analyze auto.offset.reset and group.id

    With "earliest" and a new group "my-group", the consumer starts reading from the earliest messages available.
  3. Final Answer:

    Consumer reads messages from the earliest offset but does not auto-commit offsets -> Option A
  4. Quick Check:

    enable.auto.commit=false + earliest = read earliest, no auto commit [OK]
Hint: enable.auto.commit=false means manual offset commit [OK]
Common Mistakes:
  • Assuming auto-commit is enabled by default
  • Confusing earliest with latest offset reset
  • Expecting error without deserializer (not shown here)
4.

Identify the error in this Kafka consumer configuration snippet:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "test-group");
props.put("enable.auto.commit", true);
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
medium
A. "enable.auto.commit" should be a String "true", not boolean true
B. "group.id" is missing and must be added
C. "bootstrap.servers" value is incorrect format
D. Deserializers should be set to IntegerDeserializer

Solution

  1. Step 1: Check data types for properties

    Kafka consumer properties expect String values, so "enable.auto.commit" should be set as "true" (a String), not boolean true.
  2. Step 2: Verify other properties

    "group.id" is present, "bootstrap.servers" format is correct, and deserializers are valid for String keys and values.
  3. Final Answer:

    "enable.auto.commit" should be a String "true", not boolean true -> Option A
  4. Quick Check:

    Properties values must be Strings [OK]
Hint: Property values must be strings, not booleans [OK]
Common Mistakes:
  • Using boolean true instead of "true" string
  • Omitting group.id property
  • Incorrect bootstrap.servers format
  • Wrong deserializer class for String data
5.

You want a Kafka consumer to read messages from multiple topics and manually commit offsets only after processing batches successfully. Which configuration settings should you use?

hard
A. "auto.offset.reset" = "latest" and use consumer.assign() for topics
B. "enable.auto.commit" = "true" and assign partitions manually
C. "enable.auto.commit" = "false" and set auto.offset.reset to "none"
D. "enable.auto.commit" = "false" and subscribe to multiple topics with consumer.subscribe(List.of(...))

Solution

  1. Step 1: Understand manual offset commit requirement

    Setting "enable.auto.commit" to "false" disables automatic commits, allowing manual control after processing.
  2. Step 2: Subscribe to multiple topics

    Using consumer.subscribe(List.of(...)) allows subscribing to multiple topics easily.
  3. Step 3: Evaluate other options

    "enable.auto.commit" = "true" and assign partitions manually enables auto commit which conflicts with manual commit need; "auto.offset.reset" = "latest" and use consumer.assign() for topics uses latest offset reset which may skip old messages; "enable.auto.commit" = "false" and set auto.offset.reset to "none" sets offset reset to "none" which causes errors if no offset found.
  4. Final Answer:

    "enable.auto.commit" = "false" and subscribe to multiple topics with consumer.subscribe(List.of(...)) -> Option D
  5. Quick Check:

    manual commit + subscribe multiple topics = "enable.auto.commit" = "false" and subscribe to multiple topics with consumer.subscribe(List.of(...)) [OK]
Hint: Disable auto commit and subscribe to topics for manual control [OK]
Common Mistakes:
  • Enabling auto commit when manual commit is needed
  • Using assign() instead of subscribe() for multiple topics
  • Setting auto.offset.reset to "none" causing errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard