关于Kafka的那些坑

进来使用了Kafka消息队列,喜忧参半。数据库

细数一下,踩过的坑。服务器

一、最好不要用Windows服务器去搞,固然像本人这样被迫使用的,就硬着头皮搞。spa

Windows服务器搭建Kafka,首先先例少。其次稳定性,我的感受要比Linux或者Mac上差远了。Windows上,中止Kafka后,在启动须要删掉log。不然会报错,log正在被另外一个进程访问。Mac运行则没发现一样错误。server

二、Kafka的topic命名,必定不要用 点"."或者 下划线"_"。本人亲测,下划线将会有坑。没有去细读底层代码,但实际运行发现队列

例如通道名 test_a  和 test。 两个通道就会有问题,本人亲测,向test发送消息,consumer收不到test通道的消息,向test_a发送消息,consumer监听test_a则能够收到。虽然没有深究根源,但建议各位直接使用全英文topic名,省去麻烦。另外对于大小写也存在问题,不要建立字母相同,仅大小写不一样的topic。进程

三、关于删除Kafka的topic,尤为是在Windows下,极可能灰常麻烦。仅执行delete topic 是很差使的。还须要去zookeeper中删掉。kafka

 删除命令:./bin/kafka-topics  --delete --zookeeper 【zookeeper server】  --topic 【topic name】
cmd

       执行zookeeper/bin/zkCli.cmd消息队列

 输入命令:ls /brokers/topics
it

 会看到topic 列表

而后输入:rmr /brokers/topics/【topic name】(替换须要删掉的topic)

四、能够考虑搭配数据库使用,数据库记录消息。这样即使消息队列挂掉,也有据可查。Kafka消息能够添加key,添加惟一key。便于查询记录。固然,这个根据须要,此条仅作讨论用。