Bird
0
0

You want to process messages from multiple topics and commit offsets manually after processing. Which code snippet correctly sets up the Kafka consumer for this use case?

hard📝 Application Q15 of 15
Kafka - Consumers
You want to process messages from multiple topics and commit offsets manually after processing. Which code snippet correctly sets up the Kafka consumer for this use case?
Aprops.put("enable.auto.commit", "false"); consumer.subscribe(Arrays.asList("topicA", "topicB")); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000)); for (ConsumerRecord<String, String> record : records) { process(record.value()); } consumer.commitSync(); }
Bprops.put("enable.auto.commit", "true"); consumer.subscribe(Collections.singletonList("topicA")); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000)); for (ConsumerRecord<String, String> record : records) { process(record.value()); } }
Cprops.put("enable.auto.commit", "false"); consumer.assign(Arrays.asList(new TopicPartition("topicA", 0))); consumer.subscribe(Arrays.asList("topicB")); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000)); for (ConsumerRecord<String, String> record : records) { process(record.value()); } consumer.commitAsync(); }
Dprops.put("enable.auto.commit", "false"); consumer.subscribe(Arrays.asList("topicA", "topicB")); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000)); for (ConsumerRecord<String, String> record : records) { process(record.value()); } }
Step-by-Step Solution
Solution:
  1. Step 1: Disable auto commit for manual offset control

    Setting "enable.auto.commit" to "false" allows manual offset commits.
  2. Step 2: Subscribe to multiple topics correctly

    Use consumer.subscribe(Arrays.asList("topicA", "topicB")) to listen to multiple topics.
  3. Step 3: Commit offsets after processing

    Calling consumer.commitSync() after processing ensures offsets are saved manually.
  4. Final Answer:

    Code snippet with manual commit, multiple topic subscription, and commitSync() -> Option A
  5. Quick Check:

    Manual commit + multiple topics = props.put("enable.auto.commit", "false"); consumer.subscribe(Arrays.asList("topicA", "topicB")); while (true) { ConsumerRecords records = consumer.poll(Duration.ofMillis(1000)); for (ConsumerRecord record : records) { process(record.value()); } consumer.commitSync(); } [OK]
Quick Trick: Disable auto commit and call commitSync() after processing [OK]
Common Mistakes:
  • Using auto commit when manual commit is needed
  • Mixing assign() and subscribe() incorrectly
  • Forgetting to commit offsets after processing

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More Kafka Quizzes