本文通过实战项目基于事件驱动架构实现实时流处理应用,使用到Spring Boot、Spring mvc、Spring Cloud Stream、Apache Kafka、Lombok。读完基本能够理解基于流的微服务应用。
项目需求
- 从Restful API获取消息
- 给kafka主题发送消息
- 从kafka主题读取消息
- 把消息输出到控制台
让我们开始吧。
搭建环境
Spring Cloud Stream是基于Spring Boot构建消息驱动微服务框架。Kafka是高性能的、可伸缩的分布式消息代理平台。Lombok让我们简化java Beandinginess。下面简单介绍下安装Kafka,并新建SpringBoot项目。
- 下载kafka
在 官网 下载kafka,注意和你本机的scala版本一致。解压后启动kafka服务。
- 启动kafka
启动zookeeper, 如果windows环境,bin/window/对应的.bat文件:
$ bin/zookeeper-server-start.sh config/zookeeper.properties
启动kafka, 如果windows环境,bin/window/对应的.bat文件:
$ bin/kafka-server-start.sh config/server.properties
Spring Boot项目
使用Idea新建Spring Boot项目,并增加下列依赖:
spring-cloud-stream、spring-kafka、spring-cloud-stream-binder-kafka、spring-boot-starter-web、spring-boot-starter-actuator、lombok、spring-boot-devtools。完整代码如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dataz</groupId> <artifactId>streamkafka</artifactId> <version>0.0.1-SNAPSHOT</version> <name>streamkafka</name> <description>streamkafka</description> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.7.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR9</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spr