What if your system could clean itself automatically, saving you hours of headache?
Why Retention policies (time-based, size-based) in Kafka? - Purpose & Use Cases
Imagine you run a busy message system where data piles up every second. Without any rules, your storage fills up fast, and old messages clog the system.
Manually deleting old messages or limiting storage is slow and risky. You might delete important data by mistake or run out of space unexpectedly, causing system crashes.
Retention policies automatically remove old or excess data based on time or size limits. This keeps your system clean and reliable without constant manual work.
while (storageFull()) { deleteOldMessages(); }setRetentionPolicy(time='7d', size='10GB')
It lets your system manage data smartly, freeing you to focus on building features instead of cleaning up storage.
A chat app keeps messages only for 30 days or until 5GB of data, so users get fresh chats and the server never runs out of space.
Manual cleanup is slow and error-prone.
Retention policies automate data removal by time or size.
This keeps systems efficient and reliable without extra effort.
Practice
retention.ms setting control in Kafka?Solution
Step 1: Understand retention.ms meaning
retention.mssets the time duration Kafka retains data before deletion.Step 2: Compare with other options
Other options relate to size, partitions, or replication, not time retention.Final Answer:
How long Kafka keeps data before deleting it -> Option BQuick Check:
retention.ms = time-based retention [OK]
- Confusing retention.ms with retention.bytes
- Thinking it controls topic size
- Mixing it with partition count
Solution
Step 1: Identify correct property for size-based retention
The correct property isretention.bytesfor size limits.Step 2: Check option values and names
"retention.bytes" = 1073741824 usesretention.byteswith a size value (1GB). Others use wrong keys or time-based keys.Final Answer:
"retention.bytes" = 1073741824 -> Option AQuick Check:
Size retention uses retention.bytes [OK]
- Using retention.time instead of retention.ms
- Using retention.size which is invalid
- Confusing retention.ms with size setting
retention.ms=60000 and retention.bytes=1048576, what happens when the topic data reaches 2MB before 60 seconds pass?Solution
Step 1: Understand retention.ms and retention.bytes interaction
Kafka deletes data when either time or size limit is reached, whichever comes first.Step 2: Analyze given values
Size limit is 1MB, data reached 2MB before 60 seconds, so size limit triggers deletion immediately.Final Answer:
Kafka deletes old data immediately because size limit is reached -> Option CQuick Check:
Retention triggers on earliest limit reached [OK]
- Thinking both limits must be reached to delete
- Assuming time limit always overrides size
- Ignoring size limit when time not reached
retention.ms to a negative value in Kafka topic config. What is the likely outcome?Solution
Step 1: Check Kafka behavior for negative retention.ms
Kafka interprets negative retention.ms as infinite retention, meaning no data deletion.Step 2: Confirm other options
Kafka does not throw error or delete immediately; it does not revert to default automatically.Final Answer:
Kafka treats it as infinite retention (never deletes data) -> Option AQuick Check:
Negative retention.ms means infinite retention [OK]
- Expecting an error on negative value
- Assuming immediate deletion
- Thinking default value applies automatically
Solution
Step 1: Convert 2 hours to milliseconds
2 hours = 2 * 60 * 60 * 1000 = 7,200,000 ms.Step 2: Convert 500MB to bytes
500MB = 500 * 1024 * 1024 = 524,288,000 bytes.Step 3: Match values to options
"retention.ms"=7200000 and "retention.bytes"=524288000 matches both correct values; others have wrong size or time values.Final Answer:
"retention.ms"=7200000 and "retention.bytes"=524288000 -> Option DQuick Check:
2 hours = 7200000 ms, 500MB = 524288000 bytes [OK]
- Using seconds instead of milliseconds for retention.ms
- Confusing MB with bytes without conversion
- Setting only one limit when both are needed
Ready to prove it?
Pass the test and this pattern moves unknown
