Apache Kafka Tutorial 0/111 lessons ~6 min read Lesson 18
Acknowledgements
What is Acknowledgements?
Course progress0%
Focus
9 guided sections
Practice signal
Examples included
Career prep
Foundation builder
Introduction
What is Acknowledgements? acks controls when a producer considers a write successful: 0 means fire-and-forget, 1 means leader ack, all means leader plus in-sync replicas.
Understanding the topic
What happens — Acknowledgements:
- acks=0: fire-and-forget, fastest, may lose data.
- acks=1: leader confirms, limited durability.
- acks=all: all ISR replicas confirm — safest.
- Pair acks=all with min.insync.replicas on broker.
| Term | Description |
|---|---|
| Topic | A named channel where producers publish and consumers read — e.g. user_signups or payment_logs. |
| Partition | A topic is split into partitions for parallel storage and processing. Ordering is per partition. |
| ProducerRecord | The object you send: topic name, optional key, value (payload), and optional headers. |
| Serialization | Converting your data (String, JSON, Avro) into bytes — Kafka only stores bytes. |
| Key | Optional field used to pick a partition. Same key → same partition → ordered delivery for that key. |
| Broker | Kafka server that stores messages and serves producers and consumers. |
| Ack (Acknowledgment) | How many replicas must confirm receipt before the send is considered successful (acks=0, 1, or all). |
Visual explanation
Pipeline view:
text
App creates message (e.g. "User signed up")↓Producer sends to topic (e.g. user_signups)↓Kafka stores in partitioned log (replicated)↓Consumers / analytics / alerts read in real time
Step-by-step explanation
- Initialization — Producer connects to bootstrap servers and receives metadata (topics, partitions, leaders).
- Message creation — Application builds a ProducerRecord with topic, key, value, and optional timestamp.
- Serialization — Key and value serializers convert objects to bytes (e.g. StringSerializer).
- Partitioning — Hash of key picks partition; no key → round-robin / sticky partitioner.
- Batching — Records accumulate in the RecordAccumulator per partition for efficient network use.
- Sending — Background sender thread ships batches to the partition leader broker.
- Acknowledgement — Broker responds; producer retries on failure based on acks and retry settings.
Informative example
Example:
bash
kafka-topics --bootstrap-server localhost:9092 --create --topic acknowledgements --partitions 6 --replication-factor 3kafka-console-producer --bootstrap-server localhost:9092 --topic acknowledgementskafka-console-consumer --bootstrap-server localhost:9092 --topic acknowledgements --from-beginningkafka-consumer-groups --bootstrap-server localhost:9092 --describe --group acknowledgements-service
Execution workflow
1Acknowledgements workflow
1 / 7Initialization
Producer connects to bootstrap servers and receives metadata (topics, partitions, leaders).
Best practices
- Use acks=all with min.insync.replicas for critical events.
- Enable idempotence for retry safety.
- Choose keys intentionally; random keys destroy ordering.
- Monitor record-error-rate, request-latency, batch-size, and retries.
Common mistakes
- Ignoring asynchronous send failures.
- Using null keys for events that require aggregate ordering.
- Making producer timeouts too low and failing during normal broker leader movement.
Summary
Acknowledgements — Use acks=all, enable idempotence, choose meaningful keys, and handle send callbacks for errors.
Ready to mark this lesson complete?Track your journey across the entire course.