log.retention.hours
和 log.retention.ms
这两个配置项设置 Kafka 数据最大保留时间,默认为一周
log.retention.bytes
设置 Kafka 每个分区保存数据的最大容量
如果同时指定了
log.retention.hours
和log.retention.bytes
,那么只要任一条件得到满足,消息就会被删除
例如,如果log.retention.hours
设置为 24 (一天),log.retention.bytes
设置为 1000000000 (1G)。那么当数据量未达到 1G ,那么保存时间超过一天数据就会被删除;或者当数据保存时间未达到一天,但数据大小超过了 1G,那么多出来的部分就会被删除
log.segment.bytes
日志片段达到该大小就会被关闭(默认1G)
log.segment.ms
日志片段存在时间达到该值就会被关闭(默认不设置)
log.segment.bytes
和log.segment.ms
只要满足其任一条件日志片段就会被关闭,从而创建一个新的日志片段写数据
当日志片段未关闭之前,消息是不会过期的,如果
log.retention.hours
设置为 168(7 天),而日志片段需要 10 天才能被填满从而关闭(未设置log.segment.ms
),那么日志片段最多需要 17 天才会过期而被删除。
因为需要 10 天才能关闭日志,之后要等到日志片段中的最后一个消息过期(7 天)才能被删除。