我尝试创建一个使用压缩和删除的 Kafka 主题配置,以实现以下目的:
- 在保留期内,保留最新版本的 key
- 保留期过后,任何早于要删除的时间戳的消息
为此,我尝试了以下主题特定配置:
cleanup.policy=[compact,delete]
retention.ms=864000000 (10 days)
min.compaction.lag.ms=3600000 (1 hour)
min.cleanable.dirty.ratio=0.1
segment.ms=3600000 (1 hour)
代理配置如下:
log.retention.hours=7 days
log.segment.bytes=1.1gb
log.cleanup.policy=delete
delete.retention.ms=1 day
当我在测试中将其设置为较小的数量时,例如20 分钟、1 小时等,我可以正确地看到数据在保留期后被修剪,只调整主题上的 retention.ms
。
我可以看到数据已按预期正确压缩,但如果我从头开始阅读该主题,则在 10 天的保留期之后,仍然存在超过 10 天的数据。这是这么长的保留期的问题吗?
我在这里缺少任何配置吗?我已经检查了 kafka 日志,看到代理正在按预期滚动段和压缩,但看不到任何关于删除的信息?
卡夫卡版本是 5.1.2-1
最佳答案
您的主题和代理配置可能会相互覆盖,最终会评估重要性更高的一个。
关于apache-kafka - Kafka - 紧凑且基于时间的保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62017959/