注意:springboot版本和kafka版本存在对应关系,
kafka的启动需要依赖zookeeper和jdk,请确认你的虚拟机是否安装了这些
springboot版本我选择的是2.1.12.RE
kafka的版本我选择2.12.1.0.0
zookeeper的版本是3.4.10
jdk的版本是8u241也就是jdk1.8.0_241
单机版的kafka我将用docker启动,
伪集群将在一台虚拟机上搭建并启动
示例代码和所有安装包可以从我的百度云里下载,给大家准备好了
本人亲自测试成功,所以为了避免大家走弯路,什么都给大家准备好了
链接:https://pan.baidu.com/s/16sLY3ss3x6IYvjccs0xT4Q
提取码:r7i9
第一步,将相关包下载下来,然后上传到虚拟机里opt目录下,先配置jdk环境变量,这里不再演示
第二步,配置zookeep集群
将zookeeper安装包解压,进入配置文件目录然后执行cp命令,将示例配置文件复制三份,
分别修改配置文件的日志存放目录和启动程序id和端口号
注意:ip是自己虚拟机的ip,博主的是这个
如下
zoo1.cfg
zoo2.cfg
zoo3.cfg
配置文件修改后还需要做一件事情,就是在相应的目录下
dataDir=/usr/local/zookeeper/data/data1
dataDir=/usr/local/zookeeper/data/data2
dataDir=/usr/local/zookeeper/data/data3
创建myid文件,
文件内容分别是1,2,3
后面那两个文件不要管,是启动后自动生成的,如果没这个目录需要手动创建一下,再创建myid文件
这些准备就绪我们到zookeeper目录下就可以启动zookeeper集群了
分别执行下面的命令
bin/zkServer.sh start conf/zoo1.cfg
bin/zkServer.sh start conf/zoo2.cfg
bin/zkServer.sh start conf/zoo3.cfg
启动完成后可以查看节点的状态,是一主两从
bin/zkServer.sh status conf/zoo1.cfg
bin/zkServer.sh status conf/zoo2.cfg
bin/zkServer.sh status conf/zoo3.cfg
然后开始配置kafka
首先解压,然后进入kafka配置文件目录将配置文件复制三份
分别修改复制的三个配置文件
borkerid分别是1,2,3
端口分别是9092,9093,9094
对应的监听端口和建议端口也要对应上
日志目录分别是加个序号就行,kafka-logs1,kafka-logs2,kafka-logs3
zookeeper的连接地址是一样的
修改完就可以进入kafka的目录下执行启动命令了
bin/kafka-server-start.sh config/server-1.properties
bin/kafka-server-start.sh config/server-2.properties
bin/kafka-server-start.sh config/server-3.properties
当你不想开多个窗口时,可以使用后台启动的方式
bin/kafka-server-start.sh -daemon config/server-1.properties
bin/kafka-server-start.sh -daemon config/server-2.properties
bin/kafka-server-start.sh -daemon config/server-3.properties
博主的三个都启动成功了
查看启动中是否报错
如果出现错误,请认真看博文开始的部分,并检查自己的配置
然后我们可以执行send项目的测试类,发送消息,启动consumer项目去监听topic,看是否有消息打印,也可以去客户端查看topic对应的消息
发送成功
监听成功
我们通过kafka的可视化客户端也可以看到相应的主题和落入的分区和消息体。
关于单机版的,使用docker pull命令,把kafka和zookeeper的镜像拉取下来,
这里注意拉取的镜像是最新版的,这个时候请使用springboot2.2.6RE
然后spring-kafka的依赖,和kafka-clients的依赖也需要进行版本提神,否则连接会出问题。使用2.4.0.RELEASE的可行
如果不使用docker,请使用单机版的配置。
如果没有docker
使用yum install docker
然后启动docker服务
在拉取镜像
docker run -d --name zookeeper -p 2181:2181 容器id
docker run -d --name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=本机ip:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://本机ip:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 容器id
最新的自定义配置代码,不使用默认配置,在下方评论里