繁体   English   中英

使 Kafka 主题中的消息过期

[英]Expiring the messages in Kafka Topic

我们在我们的开发环境中使用 Apache Kafka 执行负载测试。
在我们安装了 confluent kafka 的 Linux 盒子中,空间有限,因此为了执行负载测试,我们在主题中添加了retention.ms 属性。

想法是在消息被消费者消费后从主题中删除。

我努力了

kafka-topics --zookeeper localhost:2181 --alter --topic myTopic --config retention.ms=10000

它不起作用,因此我们重新创建了主题并尝试了以下选项。

kafka-configs --alter --zookeeper localhost:2181 --entity-type topics --entity-name myTopic -add-config retention.ms=10000 

在运行该过程几个小时后,由于空间限制,代理将关闭。

我可以从主题以及代理的角度尝试哪些其他选项,以使消息可靠地过期并收回磁盘空间以进行长时间运行的负载测试。

除了时间之外,您还可以根据字节大小定义删除策略。

主题配置称为retention.bytes ,在文档中描述为:

如果我们使用“删除”保留策略,此配置控制分区(由日志段组成)在我们丢弃旧日志段以释放空间之前可以增长到的最大大小。 默认情况下没有大小限制,只有时间限制。 由于此限制是在分区级别强制执行的,因此将其乘以分区数以计算主题保留(以字节为单位)。

您可以将它与retention.ms一起设置,无论首先达到什么限制(字节或时间),都会触发清理。

这可能是因为您的日志清理线程可能尚未触发。

您没有提供太多关于这些主题积累了多少数据的信息。 但它可能不在 GB 中。

日志清理线程将清理已完成的日志段。 段的默认大小为 1 GB。

如果您期望巨大的负载,请将您的主题配置 segment.bytes 修改为较小的值。

或根据您的要求将配置 segment.ms 修改为 1 分钟或 10 分钟。

这应该会创建段,并根据您的日志保留时间,清理线程将清理较旧的已完成段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM