全局设置:
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