我正在尝试从kafka中删除较旧的邮件,但该邮件无法正常工作。我已经配置了kafka rentension.ms,log.cleanup属性也是如此。但是它并没有在5分钟后删除较旧的消息。这是配置,即使在kafka主题中存在较旧的记录,也将在5分钟内发布新消息。您能帮我解决一下此配置中缺少的内容吗?。因为这会增加存储成本。
-configtention.bytes = -1 --config cleanup.policy =删除--configtention.ms = 300000
答案 0 :(得分:0)
首先,重要的是要了解LogCleaner
只会删除主题的旧段上的数据,如cleanup.policy
的配置说明中所述:
“一个字符串,既可以是“删除”也可以是“紧凑”,或者两者兼有。该字符串指定了要在旧日志段上使用的保留策略。”
您的所有数据很可能仍在一个段中,因此您需要减少主题的segment.bytes
配置,以使您实际上得到“旧的”段。此配置默认为1GB,并描述为:
“此配置控制日志的段文件大小。保留和清除操作总是一次完成一个文件,因此较大的段大小意味着较少的文件,但对保留的粒度控制较少。”
如果您不想等到段被填满,也可以将配置segment.ms
从默认值7天减少到更适合您的情况。此配置描述为:
“此配置控制了一段时间,在此时间段内,即使段文件未满,Kafka也会强制日志滚动,以确保保留可以删除或压缩旧数据。”
如果保留时间较短(例如5分钟),则可能还需要将代理范围的配置log.cleaner.delete.retention.ms
从默认的1天减少到较低的值。此配置描述为:
“删除记录保留多长时间?”