Bird
Raised Fist0
Kafkadevops~20 mins

Java producer client in Kafka - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Kafka Java Producer Master
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 Java Kafka producer code snippet. 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");

KafkaProducer<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();
ASent to partition: 0
BSend failed
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 only one partition exists.

🧠 Conceptual
intermediate
1:00remaining
Which property is required to specify the Kafka broker address in a Java producer client?

When configuring a Kafka producer in Java, which property key must be set to specify the Kafka broker address?

Abootstrap.servers
Bbroker.address
Ckafka.broker
Dserver.address
Attempts:
2 left
💡 Hint

It usually contains the word 'bootstrap'.

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

Examine the following Java 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

KafkaProducer<String, String> producer = new KafkaProducer<>(props);
ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "key1", "value1");
producer.send(record);
producer.close();
ANullPointerException
BClassNotFoundException for StringSerializer
CNo error, message sent successfully
Dorg.apache.kafka.common.KafkaException: Missing value serializer
Attempts:
2 left
💡 Hint

Check if all required serializer properties are set.

📝 Syntax
advanced
1:30remaining
Which option fixes the syntax error in this Kafka producer code?

Identify the option that fixes the syntax error in the following Java Kafka producer snippet:

KafkaProducer producer = new KafkaProducer(props);
ProducerRecord record = new ProducerRecord<>("topic", "key", "value")
producer.send(record);
producer.close();
ARemove diamond operator and add semicolon after ProducerRecord line
BAdd diamond operator in constructor and semicolon after ProducerRecord line
CAdd semicolon after producer.send(record) line only
DNo changes needed, code is correct
Attempts:
2 left
💡 Hint

Check missing semicolons and proper generic usage.

🚀 Application
expert
2:00remaining
How many messages are sent by this Kafka producer code?

Given the following Java 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");

try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) {
    for (int i = 0; i < 5; i++) {
        ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", "key" + i, "value" + i);
        producer.send(record);
        if (i == 2) {
            break;
        }
    }
}
A0
B5
C3
D2
Attempts:
2 left
💡 Hint

Look at the loop and the break statement carefully.

Practice

(1/5)
1. What is the primary role of a Java producer client in Kafka?
easy
A. To send messages to Kafka topics
B. To consume messages from Kafka topics
C. To manage Kafka brokers
D. To monitor Kafka cluster health

Solution

  1. Step 1: Understand Kafka client roles

    Kafka has producers that send messages and consumers that receive messages.
  2. Step 2: Identify the producer's function

    A Java producer client specifically sends messages to Kafka topics.
  3. Final Answer:

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

    Producer = send messages [OK]
Hint: Producer sends, consumer receives messages [OK]
Common Mistakes:
  • Confusing producer with consumer
  • Thinking producer manages brokers
  • Assuming producer monitors cluster
2. Which of the following is the correct way to set the serializer for the key in a Java Kafka producer?
easy
A. props.add("key.serializer", "StringSerializer");
B. props.set("key.serializer", "StringSerializer");
C. props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
D. props.put("key.serializer", String.class);

Solution

  1. Step 1: Recall how to set properties in Kafka producer

    Kafka producer uses Properties object with put(key, value) method.
  2. Step 2: Identify correct serializer setting syntax

    The key.serializer must be set to the full class name as a string.
  3. Final Answer:

    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); -> Option C
  4. Quick Check:

    Use props.put with full serializer class name [OK]
Hint: Use props.put with full serializer class name string [OK]
Common Mistakes:
  • Using props.set or props.add instead of put
  • Not using full class name string
  • Passing class type instead of string
3. What will be the output of the following Java Kafka producer code snippet?
import java.util.Properties;
import org.apache.kafka.clients.producer.*;
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<>("my-topic", "key1", "value1");
producer.send(record);
producer.close();
System.out.println("Message sent");
medium
A. Message sent
B. Compilation error due to missing imports
C. Runtime error due to missing Kafka server
D. No output

Solution

  1. Step 1: Analyze the code flow

    The code creates a producer, sends a message, closes the producer, then prints "Message sent".
  2. Step 2: Consider output behavior

    Assuming Kafka server is running and imports are correct, the print statement executes after send and close.
  3. Final Answer:

    Message sent -> Option A
  4. Quick Check:

    Print after send and close = "Message sent" [OK]
Hint: Print statement runs after send, shows "Message sent" [OK]
Common Mistakes:
  • Assuming send() blocks until message delivered
  • Ignoring that print runs regardless of Kafka server
  • Confusing compile errors with runtime issues
4. Identify the error in this Java Kafka producer code snippet:
import java.util.Properties;
import org.apache.kafka.clients.producer.*;
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<String, String> producer = new KafkaProducer<>(props);
ProducerRecord<String, String> record = new ProducerRecord<>("my-topic");
producer.send(record);
producer.close();
medium
A. Producer not closed properly
B. Incorrect serializer class name
C. Missing bootstrap.servers property
D. ProducerRecord missing key argument

Solution

  1. Step 1: Check ProducerRecord constructor usage

    The constructor used has only topic, but the generic type expects key and value.
  2. Step 2: Identify mismatch in arguments

    ProducerRecord<String, String> expects key and value, but no key/value is provided, causing a compile error.
  3. Final Answer:

    ProducerRecord missing key argument -> Option D
  4. Quick Check:

    ProducerRecord requires key and value [OK]
Hint: ProducerRecord needs key and value if generics specify both [OK]
Common Mistakes:
  • Using wrong ProducerRecord constructor
  • Ignoring generic type mismatch
  • Assuming value-only constructor works with key type
5. You want to send multiple messages to different Kafka topics using a single Java producer instance efficiently. Which approach is best?
hard
A. Create a new KafkaProducer for each message
B. Reuse one KafkaProducer and send ProducerRecords with different topics
C. Use multiple threads each with its own KafkaProducer
D. Send all messages to one topic and then move them to others

Solution

  1. Step 1: Understand KafkaProducer resource usage

    Creating a producer is expensive; reusing one instance is efficient.
  2. Step 2: Sending to multiple topics

    ProducerRecords can specify different topics; one producer can send to many topics.
  3. Step 3: Evaluate other options

    Creating many producers wastes resources; sending all to one topic is incorrect.
  4. Final Answer:

    Reuse one KafkaProducer and send ProducerRecords with different topics -> Option B
  5. Quick Check:

    One producer, multiple topics via records [OK]
Hint: Reuse one producer; specify topic per ProducerRecord [OK]
Common Mistakes:
  • Creating many producers wastes resources
  • Sending all messages to one topic incorrectly
  • Assuming each thread needs its own producer
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