做一个简单的kafka消息发送订阅功能,使用心跳机制进行监测,监测系统的线上健康状态,通过消息队列给kafka服务端发送健康状态标识值,在系统内实时监听消费,并做相应的业务提醒操作。因为只是介绍kafka的实现原理,心跳监测这里就不详细介绍了,感兴趣的同学可以去学习Netty相关的知识。这里使用SpringBoot Task定时任务 + 时间戳取模 模拟了心跳监测出不同的系统状态给kafka服务端发送消息,在系统消费端通过KafkaListener实时监听到对应的topics接收到消息后,根据其信息类型,做相应的业务提醒操作。
1.实现代码
1.1 maven依赖
这里需要注意的是SpringBoot与spring-kafka的版本对应关系,不对应运行会报错
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.weichai</groupId>
<artifactId>KafkaDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>KafkaDemo</name>
<url>http://maven.apache.org</url>
<!-- 设定主仓库,按设定顺序进行查找。 -->
<repositories>
<repository>
<id>jeesite-repos</id>
<name>Jeesite Repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
</repositories>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId&