背景
今天是2022年3月23日
目前官网能下载到的最新的kafka已经是kafka-3.1.0-src.tgz
版本
查了一阵子,发现kafka3 是一个大版本。
变化内容诸如(仅限个人理解,不一定全面和绝对准确):
- kafka3 不再一定依赖zookeeper,它自带两种模式:
Kraft模式
和基于zookeeper启动的模式
(如果可以这么叫的话) Kraft模式
是新的,基于zookeeper启动的模式
是旧的,原有的,并且未来会去掉。- kafka3 不支持jdk8
- 目前kafka3的
Kraft模式
不是很稳定,不太建议用在生产环境。 - kafka3目前教程不多,网上找到的多是kafka2的例子
结论:先装kafka2学习
实操
1. 按照官网操作
安装包自行下载,很容易。
2. 按文档执行安装
$ tar -xzf kafka_2.13-3.1.0.tgz
$ cd kafka_2.13-3.1.0
# Start the ZooKeeper service
# Note: Soon, ZooKeeper will no longer be required by Apache Kafka.
$ bin/zookeeper-server-start.sh config/zookeeper.properties
我的操作后的效果如图:
# Start the Kafka broker service
$ bin/kafka-server-start.sh config/server.properties
效果如图:
- 查看启动后的效果
实际使用
官方文档里就非常详细准确了,可完全照着做
命令行方式使用
创建event
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
发消息:
bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Ctrl + C 终止。
展示消息:
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
操作如图:
java代码方式使用
我仿照了这个文章的做法,但启动报错,并未成功。
https://segmentfault.com/a/1190000015316875
后经过调整,springboot启动成功、kafka也正常收发消息,算是完成了demo。
地址:
https://gitee.com/codejam_org/springboot-kafka-demo
依赖信息:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.9.RELEASE</version>
</parent>
<groupId>org.example</groupId>
<artifactId>sb-kafka-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
具体java代码见demo,亲测成功。
注意事项
-
特别补充一下,如果你的kafka-server 和 java项目不在同一台机器的话,需要设置一下允许kafka远程访问。
参考地址:https://blog.csdn.net/u012887259/article/details/102425818 -
使用的kafka是 2.13版本的,springboot是 2.1.9-RELEASE版本的
上个收发成功的图
当前(2022年3月23日)网页备份
对先后启动zk和kafka有用,对java操作无用,放在这里只是个备份