Bird
Raised Fist0
Kafkadevops~20 mins

Producer API basics in Kafka - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Kafka Producer Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Kafka Producer code snippet?

Consider the following Kafka Producer code in Java. What will be printed to the console?

Kafka
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

Producer<String, String> producer = new KafkaProducer<>(props);

ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "key1", "value1");

try {
    RecordMetadata metadata = producer.send(record).get();
    System.out.println("Sent to partition: " + metadata.partition());
} catch (Exception e) {
    System.out.println("Send failed");
}
producer.close();
ASend failed
BSent to partition: 0
CSent to partition: 1
DCompilation error
Attempts:
2 left
💡 Hint

By default, Kafka assigns messages to partition 0 if no custom partitioner is set and the topic has one partition.

🧠 Conceptual
intermediate
1:30remaining
Which property controls the Kafka Producer's acknowledgment behavior?

In Kafka Producer configuration, which property determines how many acknowledgments the producer requires the leader to receive before considering a request complete?

Aacks
Bbatch.size
Cretries
Dlinger.ms
Attempts:
2 left
💡 Hint

Think about the property that controls message durability guarantees.

🔧 Debug
advanced
2:00remaining
What error does this Kafka Producer code raise?

Examine the following Kafka Producer code snippet. What error will it raise when run?

Kafka
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
// Missing value.serializer property

Producer<String, String> producer = new KafkaProducer<>(props);

ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "key1", "value1");
producer.send(record);
producer.close();
AClassNotFoundException for StringSerializer
BNullPointerException at send()
CNo error, message sent successfully
Dorg.apache.kafka.common.KafkaException: Failed to construct kafka producer
Attempts:
2 left
💡 Hint

Check if all required serializer properties are set.

📝 Syntax
advanced
2:00remaining
Which option correctly creates a Kafka Producer with String key and value?

Choose the correct Java code snippet that creates a Kafka Producer with String key and value serializers.

A
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", new StringSerializer());
props.put("value.serializer", new StringSerializer());
Producer&lt;String, String&gt; producer = new KafkaProducer&lt;&gt;(props);
B
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", StringSerializer.class.getName());
props.put("value.serializer", StringSerializer.class.getName());
Producer&lt;String, String&gt; producer = new KafkaProducer&lt;&gt;(props);
C
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer&lt;String, String&gt; producer = new KafkaProducer&lt;&gt;(props);
D
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "StringSerializer");
props.put("value.serializer", "StringSerializer");
Producer&lt;String, String&gt; producer = new KafkaProducer&lt;&gt;(props);
Attempts:
2 left
💡 Hint

The serializer properties require the full class name as a string.

🚀 Application
expert
2:30remaining
How many messages are sent in this Kafka Producer loop?

Given the following Kafka Producer code, how many messages will be sent to the topic?

Kafka
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

Producer<String, String> producer = new KafkaProducer<>(props);

for (int i = 0; i < 5; i++) {
    ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "key" + i, "value" + i);
    producer.send(record);
    if (i == 2) {
        break;
    }
}
producer.close();
A3
B5
C2
D0
Attempts:
2 left
💡 Hint

Consider the effect of the break statement inside the loop.

Practice

(1/5)
1. What is the main purpose of the Kafka Producer API?
easy
A. To send messages to Kafka topics
B. To read messages from Kafka topics
C. To manage Kafka cluster configurations
D. To monitor Kafka broker health

Solution

  1. Step 1: Understand Kafka Producer role

    The Producer API is designed to send data to Kafka topics, acting as the message sender.
  2. Step 2: Differentiate from other Kafka APIs

    Reading messages is done by the Consumer API, not the Producer API.
  3. Final Answer:

    To send messages to Kafka topics -> Option A
  4. Quick Check:

    Producer API = send messages [OK]
Hint: Producer API sends data; Consumer API reads data [OK]
Common Mistakes:
  • Confusing Producer with Consumer API
  • Thinking Producer manages cluster
  • Assuming Producer monitors brokers
2. Which of the following is the correct way to create a Kafka Producer in Java?
easy
A. Producer<String> producer = new Producer(props);
B. KafkaProducer producer = new KafkaProducer<>(props);
C. KafkaProducer producer = new KafkaProducer();
D. KafkaProducer producer = KafkaProducer.create(props);

Solution

  1. Step 1: Recall KafkaProducer constructor usage

    The KafkaProducer class requires properties and type parameters for key and value types.
  2. Step 2: Check each option's syntax

    KafkaProducer producer = new KafkaProducer<>(props); correctly uses generics and constructor with properties. Others miss generics, constructor, or use invalid methods.
  3. Final Answer:

    KafkaProducer producer = new KafkaProducer<>(props); -> Option B
  4. Quick Check:

    Correct constructor with generics = KafkaProducer producer = new KafkaProducer<>(props); [OK]
Hint: Use new KafkaProducer<>(props) with key and value types [OK]
Common Mistakes:
  • Omitting generics for key and value
  • Using wrong constructor or method
  • Not passing properties object
3. What will be the output of the following Java code snippet?
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer producer = new KafkaProducer<>(props);
ProducerRecord record = new ProducerRecord<>("my-topic", "key1", "value1");
producer.send(record);
System.out.println("Message sent");
producer.close();
medium
A. No output
B. Compilation error
C. Message sent
D. Runtime exception due to missing topic

Solution

  1. Step 1: Analyze producer setup and send call

    The code sets up properties correctly, creates a producer, and sends a message to "my-topic" with key and value.
  2. Step 2: Check output statement and close

    After sending, it prints "Message sent" and closes the producer. No errors expected if Kafka broker is running.
  3. Final Answer:

    Message sent -> Option C
  4. Quick Check:

    Successful send prints message [OK]
Hint: If send() succeeds, print statement runs [OK]
Common Mistakes:
  • Assuming send() is synchronous and blocks
  • Thinking missing topic causes error here
  • Ignoring need for running Kafka broker
4. Identify the error in this Kafka Producer code snippet:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "StringSerializer");
props.put("value.serializer", "StringSerializer");
KafkaProducer producer = new KafkaProducer<>(props);
ProducerRecord record = new ProducerRecord<>("topic", "key", "value");
producer.send(record);
producer.close();
medium
A. Missing topic name in ProducerRecord
B. Properties object not initialized
C. Producer not closed properly
D. Incorrect serializer class names

Solution

  1. Step 1: Check serializer class names in properties

    The serializer values must be full class names like "org.apache.kafka.common.serialization.StringSerializer".
  2. Step 2: Verify other code parts

    Topic name is present, producer is closed properly, and properties object is initialized correctly.
  3. Final Answer:

    Incorrect serializer class names -> Option D
  4. Quick Check:

    Serializer class names must be full package names [OK]
Hint: Use full serializer class names with package [OK]
Common Mistakes:
  • Using short class names without package
  • Forgetting to close producer
  • Leaving topic name empty
5. You want to send messages with keys to ensure ordering per key in Kafka. Which ProducerRecord constructor should you use?
hard
A. ProducerRecord(String topic, K key, V value)
B. ProducerRecord(String topic, V value)
C. ProducerRecord(K key, V value)
D. ProducerRecord(String topic)

Solution

  1. Step 1: Understand ordering by key in Kafka

    Kafka guarantees ordering within a partition, and keys determine partition assignment.
  2. Step 2: Identify correct ProducerRecord constructor

    To send with a key, use the constructor that includes topic, key, and value.
  3. Final Answer:

    ProducerRecord(String topic, K key, V value) -> Option A
  4. Quick Check:

    Use constructor with topic, key, and value for ordering [OK]
Hint: Include key in ProducerRecord to maintain order [OK]
Common Mistakes:
  • Using constructor without key loses ordering
  • Omitting topic causes errors
  • Confusing key and value parameters
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