后端同学基本上都知道Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景,本篇文章主要讲解如何本地搭建kafka环境以及springcloud集成。
前期准备
1、下载kafka(V2.5.1)
kafka下载地址,点击这里即可
2、环境准备
2)zookeeper,因kafka内置zookeeper,故不需要下载和配置
3、修改配置文件
这里主要修改三个配置文件server.properties、zookeeper.properties、log4j.properties
1)server.properties
文件位置:kafka\config
log.dirs=D:\airlook_java_project\kafka_server/kafka-logs,配置启动log存放位置
2)zookeeper.properties
文件位置:kafka\config
dataDir=D:\airlook_java_project\kafka_server/data/zookeeper
3)log4j.properties
文件位置:kafka\config
log4j.appender.kafkaAppender.File=D:\airlook_java_project\kafka_server/logs/server.log
4、启动zookeeper服务
进入D:\airlook_java_project\kafka_server\bin\windows目录,然后运行如下命令
zookeeper-server-start.bat ../../config/zookeeper.properties
5、关闭zookeeper服务
zookeeper-server-stop.bat ../../config/zookeeper.properties
6、启动kafka服务
进入D:\airlook_java_project\kafka_server\bin\windows目录,然后运行如下命令
kafka-server-start.bat ../../config/server.properties。
7、关闭kafka服务
进入D:\airlook_java_project\kafka_server\bin\windows目录,然后运行如下命令
kafka-server-stop.bat ../../config/server.properties。
8、常见错误
1)下载kafka文件
启动KAFKA时报错Classpath is empty. Please build the project first e.g. by running 'gradlew jarA时,应该下载版本binary二进制文件,如下图所示:
2)重复启动kafka服务
如果kafka已开启一次,再进行开启会报如下错误
3)先启动kafka,后启动zookeeper服务
出现如下错误,解决方案为先启动zookeeper,后启动kafka
4)关闭zookeeper,kafka会报如下错误
5)zookerper重新启动,kafka再启动会报如下错误
解决方案,kafka输入关闭命令kafka-server-stop.bat ../../config/server.properties,然后在重新启动kafka
二、springcloud集成
1、添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
2、添加配置
在application.yml文件中添加如下配置即可
stream: kafka: binder: brokers: localhost:9092 zk-nodes: localhost:2181
3、微服务之间通讯
上面配置好之后,再根据项目实际需求配置即可,然后启动本地debug,就可进行本地启动服务之间的通讯了。