后端同学基本上都知道Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景,本篇文章主要讲解如何本地搭建kafka环境以及springcloud集成。

前期准备

1、下载kafka(V2.5.1)

kafka下载地址,点击这里即可

2、环境准备

1)64 bit JDK 1.8+;下载 & 配置

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,就可进行本地启动服务之间的通讯了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐