Kafka supports two retention strategies: time-based (delete messages older than retention.ms) and size-based (delete oldest segments when total size exceeds retention.bytes). Both operate at the segment level — Kafka deletes entire segments, not individual messages. A segment is eligible for deletion only when ALL messages in it are older than the threshold.
Key configuration
retention.ms=604800000 — 7 days (default)
retention.bytes=-1 — unlimited (default)
log.cleanup.policy=delete — delete strategy (default)