關於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。便於查詢記錄。固然,這個根據須要,此條僅作討論用。