kafka中topic相关命令
坑
1、在windows里安装的kafka相关命令一定要是bin\windows目录下
// 正确示例
.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --list
// 错误示例
.\bin\kafka-topics.sh --bootstrap-server localhost:9092 --list
2、kafka3.0和低版本的命令不一致,不可混用
// 3.0版本命令
.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --list
// 低版本命令
.\bin\windows\kafka-topics.bat --zookeeper 127.0.0.1:2181 --list
相关报错信息
Topic常用命令
1、查看当前所有的topic
.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --list
2、删除某个topic
// 删除名为Demo.today的topic
.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --delete --topic Demo.today
PS
kafka默认是会自动去创建topic;
@Test
public void testDemo() throws InterruptedException {
kafkaTemplate.send("Demo.today", "this is my two demo");
//休眠5秒,为了使监听器有足够的时间监听到topic的数据
Thread.sleep(5000);
}
若要关闭自动创建topic,只要在server.properties文件中添加如下代码
auto.create.topics.enable=false
后续如需topic,则必须手动创建
@Configuration
public class KafkaInitialConfiguration {
@Bean
public NewTopic initialTopic() {
// 分区数为8,副本为1;ps:若要修改的话分区数只能增加不能减少
return new NewTopic("Demo.today", 8, (short) 1);
}
}
强调
Topic宁愿空闲,也不要去删除,因为根本删除不了,还导致程序奔溃(最佳实践一个集群上有2W+ Topic无压力)
参考文章