Deserialization in Kafka - Commands & Configuration
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=true auto.commit.interval.ms=1000
This configuration file sets up a Kafka consumer.
bootstrap.servers tells the consumer where the Kafka server is.
key.deserializer and value.deserializer specify how to convert the message key and value from bytes to strings.
group.id identifies the consumer group.
enable.auto.commit and auto.commit.interval.ms control automatic offset commits.
kafka-console-consumer --bootstrap-server localhost:9092 --topic example-topic --from-beginning --property print.key=true --property key.deserializer=org.apache.kafka.common.serialization.StringDeserializer --property value.deserializer=org.apache.kafka.common.serialization.StringDeserializer--bootstrap-server - Specifies the Kafka server address--topic - Specifies the Kafka topic to consume from--property key.deserializer - Sets the deserializer for message keyskafka-console-producer --broker-list localhost:9092 --topic example-topic--broker-list - Specifies the Kafka server address--topic - Specifies the Kafka topic to send messages toIf you remember nothing else from this pattern, remember: deserialization converts raw Kafka message bytes into usable data formats your application can work with.
Practice
What is the main purpose of deserialization in Kafka consumers?
Solution
Step 1: Understand Kafka message flow
Kafka stores messages as raw bytes in topics.Step 2: Role of deserialization in consumers
Deserialization converts these raw bytes back into readable data for the consumer application.Final Answer:
To convert raw bytes from Kafka into usable data formats -> Option CQuick Check:
Deserialization = Convert bytes to data [OK]
- Confusing deserialization with serialization
- Thinking deserialization sends data
- Assuming deserialization compresses data
Which of the following is the correct way to specify a String deserializer in a Kafka consumer configuration?
props.put("key.deserializer", ?);Solution
Step 1: Identify deserializer for String keys
The correct class for String deserialization is StringDeserializer.Step 2: Check option correctness
"org.apache.kafka.common.serialization.StringDeserializer" uses StringDeserializer, which matches the key.deserializer property.Final Answer:
"org.apache.kafka.common.serialization.StringDeserializer" -> Option AQuick Check:
String deserializer = StringDeserializer [OK]
- Using Serializer instead of Deserializer
- Mixing IntegerSerializer with deserializer property
- Choosing ByteArrayDeserializer for String data
Given the following Kafka consumer code snippet, what will be the output if the message value is a JSON string but the deserializer is set to StringDeserializer?
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
ConsumerRecord<String, String> record = consumer.poll(Duration.ofMillis(100)).iterator().next();
System.out.println(record.value());Solution
Step 1: Understand StringDeserializer behavior
StringDeserializer converts bytes to a UTF-8 string without parsing JSON.Step 2: Output of printing record.value()
The JSON string is printed as plain text exactly as received.Final Answer:
The JSON string as plain text -> Option BQuick Check:
StringDeserializer outputs raw string [OK]
- Expecting automatic JSON parsing
- Thinking deserialization fails on JSON strings
- Assuming binary garbage output
What is the likely cause of this error in a Kafka consumer?
org.apache.kafka.common.errors.SerializationException: Error deserializing key/value for partition
Given the consumer uses
IntegerDeserializer but the producer sends String keys.Solution
Step 1: Analyze deserialization error cause
The error occurs when deserializer cannot convert bytes to expected type.Step 2: Check key type mismatch
Producer sends String keys, but consumer expects Integer keys, causing failure.Final Answer:
Mismatch between producer's String keys and consumer's IntegerDeserializer -> Option AQuick Check:
Deserializer mismatch = SerializationException [OK]
- Ignoring type mismatch between producer and consumer
- Blaming unrelated network or topic errors
- Confusing serialization with deserialization errors
You want to consume messages where the value is a JSON object representing a user with fields id (int) and name (string). Which deserialization approach is best to convert the Kafka message value into a User Java object?
Solution
Step 1: Understand data format and target type
The message value is JSON, and we want a User Java object.Step 2: Choose deserialization method
A custom deserializer can parse JSON and create User instances directly.Step 3: Evaluate other options
StringDeserializer returns raw JSON string, casting won't convert to User. IntegerDeserializer is wrong type. ByteArrayDeserializer requires manual parsing.Final Answer:
Use a custom deserializer that parses JSON into a User object -> Option DQuick Check:
Custom deserializer = JSON to object [OK]
- Casting String to object without parsing
- Using wrong deserializer type
- Manually parsing bytes instead of using deserializer
Ready to prove it?
Pass the test and this pattern moves unknown
