背景:公司系统采用了微服务架构,由于各个模块之间存在数据交互。之前这种交互少一直用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
3、liunx 中守护进程启动
Kafka在启动一段时间后,如果出现服务自动关闭情况,可在启动kafka的时使用守护进程模式启动,即在原启动命令中加 -daemon
kafka-server-start.sh -daemon config/server.properties &