Python 如何从卡夫卡删除旧邮件而不是最近的邮件

Python 如何从卡夫卡删除旧邮件而不是最近的邮件,python,amazon-web-services,apache-kafka,Python,Amazon Web Services,Apache Kafka,我正在尝试删除卡夫卡的旧邮件,但它没有按预期工作。我有卡夫卡 rentension.ms,log.cleanup属性也是。但它并没有在5分钟后删除旧邮件。这是配置,即使卡夫卡主题中存在较旧的记录,5分钟内也会发布新消息。你能帮我找出这个配置中缺少什么吗?。因为它增加了存储成本 -config retention.bytes=-1--config cleanup.policy=delete--config retention.ms=300000首先,必须了解,LogCleaner只会删除主题的旧段

我正在尝试删除卡夫卡的旧邮件,但它没有按预期工作。我有卡夫卡 rentension.ms,log.cleanup属性也是。但它并没有在5分钟后删除旧邮件。这是配置,即使卡夫卡主题中存在较旧的记录,5分钟内也会发布新消息。你能帮我找出这个配置中缺少什么吗?。因为它增加了存储成本


-config retention.bytes=-1--config cleanup.policy=delete--config retention.ms=300000

首先,必须了解,
LogCleaner
只会删除主题的旧段上的数据,如
cleanup.policy
的配置说明中所述:

“一个字符串,可以是“删除”或“压缩”或两者兼有。此字符串指定要在旧的日志段上使用的保留策略。”

很可能您的所有数据仍在一个段中,因此您需要减少主题的
段.bytes
配置,以便实际获得“旧”段。此配置默认为1GB,描述如下:

“此配置控制日志的段文件大小。保留和清理始终是一次一个文件完成的,因此较大的段大小意味着更少的文件,但对保留的控制较少。”

如果您不想等待某个段被填满,也可以将配置
segment.ms
从默认值7天减少到更适合您的情况。此配置描述为:

“此配置控制Kafka在段文件未满时强制日志滚动的时间段,以确保保留可以删除或压缩旧数据。”

如果保留时间较短,如5分钟,则可能还需要将代理范围的配置
log.cleaner.delete.retention.ms
从默认的1天减少到较低的值。此配置描述为:

“删除记录保留多长时间?”


首先,重要的是要了解,
LogCleaner
只会删除主题旧段的数据,如
cleanup.policy
的配置说明所述:

“一个字符串,可以是“删除”或“压缩”或两者兼有。此字符串指定要在旧的日志段上使用的保留策略。”

很可能您的所有数据仍在一个段中,因此您需要减少主题的
段.bytes
配置,以便实际获得“旧”段。此配置默认为1GB,描述如下:

“此配置控制日志的段文件大小。保留和清理始终是一次一个文件完成的,因此较大的段大小意味着更少的文件,但对保留的控制较少。”

如果您不想等待某个段被填满,也可以将配置
segment.ms
从默认值7天减少到更适合您的情况。此配置描述为:

“此配置控制Kafka在段文件未满时强制日志滚动的时间段,以确保保留可以删除或压缩旧数据。”

如果保留时间较短,如5分钟,则可能还需要将代理范围的配置
log.cleaner.delete.retention.ms
从默认的1天减少到较低的值。此配置描述为:

“删除记录保留多长时间?”


谢谢@mike。log.cleaner.delete.retention.ms不工作未知配置问题。请帮助我解决,我不想要旧邮件,只想要发布到5分钟的最新邮件,只需要数据删除和最新邮件不存在问题Hanks@mike。log.cleaner.delete.retention.ms不工作未知配置问题。请帮助我解决,我不想要较旧的邮件,只想要从发布到5分钟的最新邮件,只需要数据删除,最近的邮件不存在任何问题