📖 Scenario: You are building a Kafka producer that sends messages to a topic. Sometimes, network issues cause message sending to fail temporarily. To avoid sending duplicate messages when retrying, you want to enable idempotency and configure retries.
🎯 Goal: Create a Kafka producer with retries enabled and idempotency turned on. Send a message and print confirmation that the message was sent successfully.
📋 What You'll Learn
Create a Kafka producer configuration dictionary with bootstrap servers
Add configuration to enable retries with a count of 3
Enable idempotency in the producer configuration
Send a message to a topic named 'test-topic' and print confirmation
💡 Why This Matters
🌍 Real World
In real applications, network issues or broker failures can cause message sending to fail temporarily. Enabling retries and idempotency ensures messages are not lost or duplicated, which is critical for data accuracy.
💼 Career
Kafka producers with retries and idempotency are common in data engineering and backend development roles where reliable data pipelines are essential.
Progress0 / 4 steps
1
Create Kafka producer configuration
Create a dictionary called producer_config with the key 'bootstrap.servers' set to 'localhost:9092'.
Kafka
Hint
The configuration dictionary must have the key 'bootstrap.servers' with value 'localhost:9092'.
2
Add retries and enable idempotency
Add to producer_config the key 'retries' with value 3 and the key 'enable.idempotence' with value True.
Kafka
Hint
Use dictionary assignment to add 'retries' and 'enable.idempotence' keys with the correct values.
3
Create producer and send message
Import Producer from confluent_kafka. Create a Producer instance called producer using producer_config. Use producer.produce() to send the message 'Hello, Kafka!' to the topic 'test-topic'. Call producer.flush() to ensure delivery.
Kafka
Hint
Remember to import Producer, create it with the config, produce the message, and flush.
4
Print confirmation message
Write a print statement that outputs exactly 'Message sent successfully.' after the message is flushed.
Kafka
Hint
Use print() to show the confirmation text exactly as given.
Practice
(1/5)
1. What is the main purpose of enabling retries in a Kafka producer?
easy
A. To resend messages automatically if sending fails
B. To speed up message delivery
C. To prevent duplicate messages
D. To encrypt messages before sending
Solution
Step 1: Understand retries in Kafka producer
Retries allow the producer to resend messages if the first attempt fails due to temporary issues.
Step 2: Identify the main purpose
The main goal is to improve message delivery success by retrying failed sends.
Final Answer:
To resend messages automatically if sending fails -> Option A
Quick Check:
Retries = Resend on failure [OK]
Hint: Retries mean automatic resend on failure [OK]
Common Mistakes:
Confusing retries with idempotency
Thinking retries speed up delivery
Assuming retries encrypt messages
2. Which configuration must be set to true to enable idempotency in Kafka producer?
easy
A. retries = 0
B. enable.idempotency = false
C. enable.idempotency = true
D. acks = 0
Solution
Step 1: Identify idempotency configuration
The Kafka producer uses enable.idempotency to control idempotency behavior.
Step 2: Determine correct setting
Setting enable.idempotency to true activates idempotency to avoid duplicates.
Final Answer:
enable.idempotency = true -> Option C
Quick Check:
Idempotency enabled = true [OK]
Hint: Idempotency config is enable.idempotency = true [OK]