全局设置:

1)需要修改server.properties配置如下:

log.retention.hours=168 ( 168h(7天) 配置该参数即可)
log.cleanup.policy=delete (默认,可不配置)

2) 修改配置后重启kafka服务生效,该种设置消息过期时间的优点是可以对所有topic全部生效,缺点是需要重启kafka服务,
造成服务短暂的不可用!

特定Topic设置:

可以不停服针对kafka中数据量较大的topic可以单独设置过期时间,而且不需要重启kafka

下面以数据较多的 mytopic为例, 全局默认消息过期时间为7天,现在将其调整为1天

1) 操作命令

bin/kafka-configs.sh --zookeeper localhost:2181 --alter --entity-name mytopic 
--entity-type topics --add-config retention.ms=86400000

`时间设置一天 86400000ms = 1`

查看设置:
bin/kafka-configs.sh --zookeeper node03,node04,node05:2181 --describe --entity-name mytopic --entity-type topics

Configs for topics:wordcounttopic are retention.ms=86400000


立即删除某个topic下的数据

./kafka-topics.sh --zookeeper localhost:2181 --alter --topic mytopic --config cleanup.policy=delete

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐