背景:公司系統採用了微服務架構,由於各個模塊之間存在數據交互。之前這種交互少一直用RestTemplate 在各個模塊之間進 行數據查詢、修改等操作。但是最近發現這種交互越來越多搞得有時候分不清誰和誰之間有交互了。經過考量覺得采用分 布式消息的方式來進行處理。
消息系統的選擇,經過查看一些文章,目前比較流行的消息系統有ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka。經過考量我選擇了Kafka。
現在將搭建Kafka的步驟記錄下來,大家相互交流學習。
版本說明:
kafka_2.12-1.1.0 下載地址:http://mirror.bit.edu.cn/apache/kafka/1.1.0/kafka_2.12-1.1.0.tgz
zookeeper-3.4.12 下載地址:http://mirror.bit.edu.cn/apache/zookeeper/
一、zookeeper部署
1、解壓zookeeper 到 E:\study\kafka\zookeeper-3.4.12 目錄
2、打開:E:\study\kafka\zookeeper-3.4.12\conf,把zoo_sample.cfg重命名成zoo.cfg ,打開zoo.cfg文件,找到如下信息並做修改
dataDir=E:\study\kafka\data\logs\zookeeper
dataLogDir=E:\study\kafka\data\logs\zookeeper
3、添加zookeeper環境變量
ZOOKEEPER_HOME:E:\study\kafka\zookeeper-3.4.12
Path中追加 ;%ZOOKEEPER_HOME%\bin;
4、運行zookeeper
打開cmd命令窗口 執行 zkserver 。當然可能有一帆風順的事,你可能會遇到如下的問題。
提示也很明確,JAVA_HOME 沒有設置,設置java_home和path即可。
設置完之後要關閉cmd窗口,重新打開!!!
再次運行zkserver
看到上面的信息標識zookeeper已經順利完成部署。
二 、kafka部署
1、解壓kafka 到 E:\study\kafka\kafka_2.12-1.1.0 目錄
2、打開E:\study\kafka\kafka_2.12-1.1.0\server.properties
3、找到log.dirs配置項,修改爲log.dirs=E:\study\kafka\data\logs\kafka
4、重新開啓一個CMD命令行窗口,cd 進入E:\study\kafka\kafka_2.12-1.1.0\bin\windows 目錄
5、輸入命令 .\kafka-server-start.bat E:\study\kafka\kafka_2.12-1.1.0\config\server.properties。如果看到如下信息提示,則表示kafka部署成功
三、創建一個主題topics
新開一個cmd窗口,進入E:\study\kafka\kafka_2.12-1.1.0\bin\windows 目錄,輸入命令
.\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
此時kafka server的窗口會輸出創建topics的一些信息,如下圖
四、開啓一個producer
新開一個cmd窗口,進入E:\study\kafka\kafka_2.12-1.1.0\bin\windows 目錄,輸入命令
.\kafka-console-producer.bat --broker-list localhost:9092 --topic test
開啓成功後,光標會在窗口閃爍,表示等待輸入消息,如下圖
五、開啓一個Consumer
新開一個cmd窗口,進入E:\study\kafka\kafka_2.12-1.1.0\bin\windows 目錄,輸入命令
.\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
六、生產和消費消息
在producer中輸入一個消息 hello kafka
至此kafka基礎開發環境搭建完畢
常用命令補充:
1、查看所有的topic
.\kafka-topics.bat --list --zookeeper localhost:2181
2、刪除指定的topic
.\kafka-topics.bat --zookeeper localhost:2181 --delete --topic topicname