Kafka topic消息清理几种方式

Kafka清理Topic消息

参考链接:https://cloud.tencent.com/developer/article/1590094

快速配置删除法

  1. kafka启动之前,在server.properties配置delete.topic.enable=true

  2. 执行命令bin/kafka-topics.sh --delete --topic test --zookeeper zk:2181或者使用kafka-manage集群管理工具删除。如果kafka启动之前没有配置delete.topic.enable=true,topic只会标记为marked for deletion,并且在Zookeeper中的/admin/delete_topics下创建对应的子节点,加上配置,重启kafka,之前的topic就真正删除了

  3. 优点由Kafka来完成Topic的相关删除,只需要修改server.properties配置文件的delete.topic.enable为true就可以了

  4. 缺点:需要重启Kafka来完成配置文件的生效

# 默认是false,注意等号前后一定不能有空格,否则配置会不生效
delete.topic.enable=true

# Bitnami Chart环境变量设置(涉及重启了)
KAFKA_CFG_DELETE_TOPIC_ENABLE=true


# 创建新的Topic logstash_test(拥有3个副本)
kafka-topics.sh --create --bootstrap-server ape-kafka-0.ape-kafka-headless:9092,ape-kafka-1.ape-kafka-headless:9092,ape-kafka-2.ape-kafka-headless:9092 --topic logstash_test --partitions 1 --replication-factor 3


# 查看Topic logstash_test的状态,发现Leader是1(broker.id=0),有三个备份分别是0,1,2
I have no name!@ape-kafka-0:/$ kafka-topics.sh --describe --bootstrap-server ape-kafka-0.ape-kafka-headless:9092,ape-kafka-1.ape-kafka-headless:9092,ape-kafka-2.ape-kafka-headless:9092 --topic logstash_test
Topic: logstash_test    TopicId: 1j9d-WGVTzKTpGdTtO0YFQ PartitionCount: 1       ReplicationFactor: 3    Configs: flush.ms=1000,segment.bytes=1073741824,flush.messages=10000,max.message.bytes=1000012,retention.bytes=1073741824
        Topic: logstash_test    Partition: 0    Leader: 0       Replicas: 0,2,1 Isr: 0,2,1
	
# 查看Zookeeper上的Topic
$ zkCli.sh -server localhost:2181
[zk: localhost:2181(CONNECTED) 0] ls /brokers/topics
[__consumer_offsets, frontend_invoke_queue, frontend_invoke_result_log, lake_add_namelist, lake_entrylog, logstash_test]
[zk: localhost:2181(CONNECTED) 1] ls /config/topics
[__consumer_offsets, frontend_invoke_queue, frontend_invoke_result_log, lake_add_namelist, lake_entrylog, logstash_test]

# 查看Kafka的server.properties配置文件中log.dirs 的目录
I have no name!@ape-kafka-0:/$ ls /bitnami/kafka/data/logstash_test-0/
00000000000000000000.index
在Linux下,Kafka创建topic几种方式如下: 1. 使用kafka-topics.sh脚本创建topic 在Linux系统上的Kafka安装目录下,有一个bin目录,其中有一个名为kafka-topics.sh的脚本文件,可以使用该脚本创建Kafkatopic。 例如,要创建一个名为test的topic,可以使用以下命令: ``` ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test ``` 其中,--create选项表示创建topic,--zookeeper指定Zookeeper的地址,--replication-factor指定副本因子,--partitions指定分区数,--topic指定topic名称。 2. 使用kafkacat工具创建topic kafkacat是一个Kafka命令行工具,它可以用来创建Kafkatopic。 例如,要创建一个名为test的topic,可以使用以下命令: ``` kafkacat -b localhost:9092 -t test -P -K: ``` 其中,-b指定Kafka的地址,-t指定topic名称,-P表示生产者模式,-K指定key和value之间的分割符。 3. 使用Java API创建topic 除了使用命令行工具外,还可以使用Java API来创建Kafkatopic。 例如,下面的Java代码可以创建一个名为test的topic: ```java import kafka.admin.AdminUtils; import kafka.utils.ZKStringSerializer$; import org.I0Itec.zkclient.ZkClient; import java.util.Properties; public class CreateTopic { public static void main(String[] args) { String zkConnect = "localhost:2181"; int sessionTimeoutMs = 10000; int connectionTimeoutMs = 10000; ZkClient zkClient = new ZkClient(zkConnect, sessionTimeoutMs, connectionTimeoutMs, ZKStringSerializer$.MODULE$); String topicName = "test"; int numPartitions = 1; int replicationFactor = 1; Properties topicConfig = new Properties(); AdminUtils.createTopic(zkClient, topicName, numPartitions, replicationFactor, topicConfig); zkClient.close(); } } ``` 该代码使用了Kafka的AdminUtils类来创建topic,首先创建一个ZkClient对象,然后使用AdminUtils.createTopic方法创建topic。其中,zkConnect指定Zookeeper的地址,numPartitions指定分区数,replicationFactor指定副本因子,topicConfig指定topic的属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺仔_牛奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值