一、前言
环境准备:
- JDK:1.8.0_241
- Scala:2.12.8 下载地址 (用
IDEA
插件也可) - Gradle:6.6(用
IDEA
插件也可)
# scala 配置
$ vim /etc/profile
SCALA_HOME=/software/Software/Java/scala-2.12.8
export SCALA_HOME
export PATH=$PATH:$SCALA_HOME/bin
# Gradle 配置
$ vim /etc/profile
export GRADLE_HOME=/software/Software/Java/Gradle/gradle-7.0.2
export PATH=${GRADLE_HOME}/bin:${PATH}
# 使环境变量生效
$ source /etc/profile
为什么选用版本 Kafka 2.7
?
kafka 2.7
版本还是带Zookeeper
,2.8
之后就换了。- 公司目前使用的
Kafka
版本仍带Zookeeper
- 先了解
Kafka
原先架构,再了解
- 下载
Kafka
源码 :官网
# 解压缩
$ tar -zxvf kafka-2.7.1-src.tgz
Kafka
源码导入IDEA
- 导包,修改
build.gradle
(可选) 进入kafka
源码包,修改build.gradle
文件,在原来配置上,添加ali
私服配置。
buildscript {
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
maven {
url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
}
}
}
allprojects {
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
maven {
url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
}
}
}
- 代码构建
# 执行后,会下载一堆 jar 包
$ ./gradlew clean build -x test
Zookeeper
安装启动
这里使用 docker
:
- 拉镜像:
sudo docker pull zookeeper
- 启动容器:
sudo docker run -d --name zookeeper -p 2181:2181 zookeeper
$ sudo docker run -d --name zookeeper -p 2181:2181 zookeeper
a86dff3689b68f6af7eb3da5a21c2dba06e9623f3c961154a8bbbe3e9991dea4
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a86dff3689b6 zookeeper "/docker-entrypoint.…" 7 seconds ago Up 6 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp zookeeper
二、环境验证
- 配置日志:拷贝
log4j.properties
(resources
目录需自己创建)
- 修改
config
目录下的server.properties
文件
# 修改日志目录为当前项目下的 kafka-logs
log.dirs=/home/donald/Documents/Code/Source/kafka-2.7.1-src/kafka-logs
- 添加依赖
slfj
日志jar
包
compile group: 'log4j', name: 'log4j', version: '1.2.17'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.30'
在 project(':core') {
下添加上面依赖:
- 启动
Kafka
- 可以直接去
core/src/main/scala/Kafka
中启动 - 或者直接配置
Kafka
启动成功后,显示如下:
测试:生产和消费数据
- 使用
kafka
自带脚本创建一个topic
:test_topic
$ ./kafka-topics.sh --zookeeper localhost:2181 --create --topic test_topic --partitions 1 --replication-factor 1
- 使用
kafka
自带脚本创建消费者去消费test_topic
$ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic
- 使用
kafka
自带脚本创建生产者去生产消息并发送到test_topic
$ ./kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
- 在生产者控制台输入消息,则在消费端看到消息
消息端就可看到:
至此验证结束,发送消息和接收消息,Kafka
中 broker
均有日志打印。