Kafka 删除一个topic的旧消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka 删除一个topic的旧消息相关的知识,希望对你有一定的参考价值。

参考技术A 1.高版本的kafka,提供了直接删除n条消息的操作方法。
脚本内容地址:

使用这个脚本, 配套的还有一个json文件。 新建一个json文件,内容如下,里面指定了partition和offset. 然后把这个文件保存为 offset.json

这时候调用脚本,可以做到删除

2.如果上述方法,提示错误:

则说明kafka版本过低,这时候可以使用另一种方法。

./kafka-topics.sh --zookeeper 127.0.0.1:2181 --alter --topic testTopic --config retention.ms=时间(微秒)
动态地更新消息保留时间,假如只保留一小时之内的消息 ,60 x 60 x 1000 = 360000 就设置为retention.ms=3600000
然后kafka需要轮询,之后会执行删除
注意:kafka执行完删除后 你需要再次调用这个脚本 把时间还原回去

这种方法,误差根据你服务器的配置来决定的。由kafka配置文件的log.retention.check.interval.ms参数控制。 并且因为有很多个节点,经常是某个节点删除了数据之后,其他的节点还没有轮询到删除操作。 总的来说精确度不是很高。

怎么彻底删除kafka的topic,然后重建

server.properties 中添加delete.topic.enable=true
执行D:\Developer\kafka_2.10-0.10.0.0\bin\windows>kafka-topics.bat --zookeeper 127.0.0.1:2181 --delete --topic TEST-TOPIC
执行zookeeper-server-stop.bat,后在重启kafka
重新发送消息即可,会自动根据配置的partitions重建
注意:不执行1步骤,就是假删除。
参考技术A

    server.properties 中添加delete.topic.enable=true

    执行D:\\Developer\\kafka_2.10-0.10.0.0\\bin\\windows>kafka-topics.bat --zookeeper 127.0.0.1:2181 --delete --topic TEST-TOPIC

    执行zookeeper-server-stop.bat,后在重启kafka

    重新发送消息即可,会自动根据配置的partitions重建

注意:不执行1步骤,就是假删除。

本回答被提问者采纳

以上是关于Kafka 删除一个topic的旧消息的主要内容,如果未能解决你的问题,请参考以下文章

kafka 删除topic时的隐患

kafka 彻底删除topic

kafka 基础概念命令行操作(查看所有topic创建topic删除topic查看某个Topic的详情修改分区数发送消息消费消息 查看消费者组 更新消费者的偏移位置)

怎么彻底删除kafka的topic,然后重建

怎么彻底删除kafka的topic,然后重建

如何彻底删除Kafka中的topic (marked for deletion)