Bird
Raised Fist0
Kafkadevops~10 mins

First message (produce and consume) in Kafka - Commands & Configuration

Choose your learning style10 modes available
Introduction
Kafka helps you send messages between different parts of your system quickly and reliably. Producing means sending a message to Kafka, and consuming means reading that message from Kafka.
When you want to send a notification from one app to another without losing it.
When you need to log events from a website and process them later.
When you want to connect different services that work independently but share data.
When you want to build a chat app where messages are passed through a central system.
When you want to collect sensor data from devices and analyze it in real time.
Config File - server.properties
server.properties
broker.id=1
listeners=PLAINTEXT://:9092
log.dirs=/tmp/kafka-logs
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000

This is the Kafka broker configuration file.

broker.id identifies the Kafka server.

listeners tells Kafka where to listen for connections.

log.dirs is where Kafka stores messages.

zookeeper.connect points to the Zookeeper service Kafka uses to manage itself.

Commands
This command creates a new topic named 'my-first-topic' where messages will be sent and received.
Terminal
kafka-topics --create --topic my-first-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
Expected OutputExpected
Created topic my-first-topic.
→
--topic - Name of the topic to create
→
--partitions - Number of partitions for the topic
→
--replication-factor - Number of copies of the data for fault tolerance
This starts a producer that lets you type messages to send to the topic 'my-first-topic'. Type your message and press Enter to send.
Terminal
kafka-console-producer --topic my-first-topic --bootstrap-server localhost:9092
Expected OutputExpected
No output (command runs silently)
→
--topic - Topic to send messages to
→
--bootstrap-server - Kafka server address
This command reads the first message from the topic 'my-first-topic' starting from the beginning of the message log.
Terminal
kafka-console-consumer --topic my-first-topic --bootstrap-server localhost:9092 --from-beginning --max-messages 1
Expected OutputExpected
Hello Kafka
→
--from-beginning - Read messages from the start of the topic
→
--max-messages - Stop after reading this many messages
Key Concept

If you remember nothing else from this pattern, remember: producing sends messages to Kafka topics, and consuming reads them back in order.

Common Mistakes
Trying to consume messages before creating the topic
Kafka will show an error because the topic does not exist yet.
Always create the topic first using kafka-topics before producing or consuming messages.
Not specifying --from-beginning when consuming messages for the first time
The consumer will only read new messages from the time it starts, missing earlier messages.
Use --from-beginning flag to read all messages from the start of the topic.
Not running Kafka broker before producing or consuming
Commands will fail because Kafka server is not running to accept connections.
Start Kafka broker with the proper configuration before running producer or consumer commands.
Summary
Create a Kafka topic to hold messages using kafka-topics command.
Send messages to the topic using kafka-console-producer.
Read messages from the topic using kafka-console-consumer with --from-beginning to see all messages.

Practice

(1/5)
1. What is the main purpose of producing a message in Kafka?
easy
A. To send data to a Kafka topic
B. To read data from a Kafka topic
C. To delete messages from a Kafka topic
D. To create a new Kafka topic

Solution

  1. Step 1: Understand Kafka producing

    Producing means sending messages to a Kafka topic as bytes.
  2. Step 2: Differentiate producing from consuming

    Consuming reads messages, but producing sends them.
  3. Final Answer:

    To send data to a Kafka topic -> Option A
  4. Quick Check:

    Producing = Sending messages [OK]
Hint: Producing means sending messages to Kafka topics [OK]
Common Mistakes:
  • Confusing producing with consuming
  • Thinking producing deletes messages
  • Assuming producing creates topics
2. Which of the following is the correct way to create a Kafka producer in Python using the kafka-python library?
easy
A. producer = KafkaConsumer(topic='mytopic')
B. producer = KafkaConsumer(bootstrap_servers='localhost:9092')
C. producer = KafkaProducer(topic='mytopic')
D. producer = KafkaProducer(bootstrap_servers='localhost:9092')

Solution

  1. Step 1: Identify Kafka producer creation syntax

    KafkaProducer is created with bootstrap_servers parameter specifying Kafka server address.
  2. Step 2: Eliminate consumer and wrong parameters

    KafkaConsumer is for consuming, not producing. Topic is not a parameter for producer creation.
  3. Final Answer:

    producer = KafkaProducer(bootstrap_servers='localhost:9092') -> Option D
  4. Quick Check:

    Producer uses KafkaProducer with bootstrap_servers [OK]
Hint: Producer uses KafkaProducer with bootstrap_servers [OK]
Common Mistakes:
  • Using KafkaConsumer instead of KafkaProducer
  • Passing topic during producer creation
  • Missing bootstrap_servers parameter
3. Consider this Python code snippet using kafka-python:
from kafka import KafkaProducer, KafkaConsumer

producer = KafkaProducer(bootstrap_servers='localhost:9092')
producer.send('test-topic', b'Hello Kafka')
producer.flush()

consumer = KafkaConsumer('test-topic', bootstrap_servers='localhost:9092', auto_offset_reset='earliest', consumer_timeout_ms=1000)
for msg in consumer:
    print(msg.value.decode())
What will be the output when this code runs?
medium
A. Error: topic not found
B. Hello Kafka
C. No output, consumer times out
D. b'Hello Kafka'

Solution

  1. Step 1: Analyze producer sending message

    Producer sends bytes message b'Hello Kafka' to 'test-topic' and flushes to ensure delivery.
  2. Step 2: Analyze consumer reading message

    Consumer reads from 'test-topic' from earliest offset and decodes bytes to string before printing.
  3. Final Answer:

    Hello Kafka -> Option B
  4. Quick Check:

    Consumer prints decoded message string [OK]
Hint: Consumer decodes bytes to string before printing [OK]
Common Mistakes:
  • Expecting raw bytes output
  • Assuming consumer misses message due to timeout
  • Thinking topic does not exist
4. You wrote this code to consume messages but it raises an error:
consumer = KafkaConsumer('my-topic')
for message in consumer:
    print(message.value.decode())
What is the most likely cause of the error?
medium
A. Using decode() on message.value which is already a string
B. Not calling consumer.poll() before iterating
C. Missing bootstrap_servers parameter when creating KafkaConsumer
D. Topic name should be a list, not a string

Solution

  1. Step 1: Check KafkaConsumer creation requirements

    KafkaConsumer requires bootstrap_servers parameter to connect to Kafka cluster.
  2. Step 2: Validate other options

    decode() is needed because message.value is bytes; consumer.poll() is optional; topic can be string or list.
  3. Final Answer:

    Missing bootstrap_servers parameter when creating KafkaConsumer -> Option C
  4. Quick Check:

    KafkaConsumer needs bootstrap_servers [OK]
Hint: Always specify bootstrap_servers when creating KafkaConsumer [OK]
Common Mistakes:
  • Omitting bootstrap_servers parameter
  • Assuming message.value is string without decoding
  • Thinking poll() is mandatory before iteration
5. You want to produce and consume the first message in a Kafka topic named 'orders'. Which sequence of steps correctly achieves this in Python using kafka-python?
hard
A. Create KafkaProducer with bootstrap_servers, send message as bytes, flush; create KafkaConsumer with bootstrap_servers and auto_offset_reset='earliest', then read and decode messages
B. Create KafkaConsumer first, then KafkaProducer; send message as string; consumer reads without decoding
C. Create KafkaProducer without bootstrap_servers, send string message; create KafkaConsumer with bootstrap_servers, read messages as bytes
D. Create KafkaProducer with topic parameter, send message; create KafkaConsumer without bootstrap_servers, read and decode messages

Solution

  1. Step 1: Properly create KafkaProducer and send message

    KafkaProducer must be created with bootstrap_servers; messages sent as bytes and flushed to ensure delivery.
  2. Step 2: Properly create KafkaConsumer and read messages

    KafkaConsumer needs bootstrap_servers and auto_offset_reset='earliest' to read from the first message; decode bytes to string when reading.
  3. Final Answer:

    Create KafkaProducer with bootstrap_servers, send message as bytes, flush; create KafkaConsumer with bootstrap_servers and auto_offset_reset='earliest', then read and decode messages -> Option A
  4. Quick Check:

    Correct producer and consumer setup with bytes and decoding [OK]
Hint: Producer sends bytes and flushes; consumer reads earliest and decodes [OK]
Common Mistakes:
  • Creating producer or consumer without bootstrap_servers
  • Sending string instead of bytes
  • Not setting auto_offset_reset to 'earliest'
  • Not decoding message bytes before printing
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