首先需要搭建Kafka broker集群(本次实验搭建3台,伪集群单机部署3台),然后在Spring容器中启动生产者、消费者,与borker集群交互。
搭建zookeeper集群
首先,启动Kafka需要安装Zookeeper.
在官网下载Kafka对应的zookeeper版本,本Demo采用Zookeeper 3.7.1和kafka 2.13,解压缩后找到bin/目录,返回上层目录,将父目录改名为zookeeper1,并创建两个子目录data和log
在conf/创建一个文件zoo.cfg,内容如下
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=D:/Lydia/software/apache-zookeeper-3.7.1-bin/zookeeper1/data
dataLogDir=D:/Lydia/software/apache-zookeeper-3.7.1-bin/zookeeper1/log
server.1=localhost:2888:3888
server.2=localhost:2889:3889
在data/目录创建文件myid,文件内容为1, 代表当前zookeeper节点的id值。
复制一份上面zookeeper1文件,修改文件夹名为zookeeper2,重复以上操作,并且修改clientPort=2182,并将data/myid设置为2
在两个zookeeper文件夹bin目录下修改zkServer.cmd
添加set ZOOCFG=..\conf\zoo.cfg,最终如下所示
依次启动zookeeper1和zookeeper2目录下的bin/zkServer.cmd,看到启动成功。
搭建Kafka
1.下载Kafka 2.13
2.解压到本地文件夹,同理,模拟两个kafka的broker,分别创建子目录kafka_2.13_1和2.13_2
3.修改kafka_2.13_1文件夹config下的server.properties文件
主要是borker.id=1
port=9092
listners=PLAINTEXT://:9092
zookeeper.connect=localhost:2181,localhost:2182(Zookeeper刚刚用到的clientPort端口号)
broker.id=1
port=9092
listeners=PLAINTEXT://:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181,localhost:2182
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
同理,修改kafka_2.13_2文件夹config下的server.properties文件
主要是borker.id=2
port=9093
listners=PLAINTEXT://:9093
zookeeper.connect=localhost:2181,localhost:2182
4.启动kafka1和kafka2文件夹下的bin/windows/kafka-server-start.bat,分别在两个cmd窗口启动两个broker,本Demo认为有两个borker组成集群。
SpringBoot整合Kakfa
感谢开源社区已经有了spring-kafka项目,可以方便地在Spring容器中启动和使用Kafk