背景
之前一直用的是mq,想系统性学习下kafka。
环境:centos
kafka 安装
1. 下载
wget https://downloads.apache.org/kafka/3.6.2/kafka_2.13-3.6.2.tgz
2. 解压 & 重命名
tar -xzf kafka_2.13-3.6.2.tgz
mv kafka_2.13-3.6.2 kafka
3. 修改配置
vim kafka/config/server.properties
可以根据需要修改以下参数:
broker.id:每个 broker 的唯一标识符,可以是任意整数,通常从 0 开始递增。listeners:设置 Kafka 服务监听的地址和端口,例如PLAINTEXT://localhost:9092。log.dirs:指定 Kafka 存储日志文件的目录。我配置的是:/var/log/kafka.log。
4. 启动 Kafka
1. 启动 Zookeeper
Kafka 使用 Zookeeper 进行协调,所以需要先启动 Zookeeper。
nohup /root/kafka/bin/zookeeper-server-start.sh /root/kafka/config/zookeeper.properties &
2. 启动 Kafka 服务:
nohup /root/kafka/bin/kafka-server-start.sh /root/kafka/config/server.properties &
3. 每次开机自启动 kafka服务
不感兴趣的可不看。
在 CentOS 上设置让这两个命令开机自启动且有先后顺序的步骤:
一、使用 systemd 服务
- 创建一个 systemd 服务文件用于启动 Zookeeper:
sudo vi /etc/systemd/system/kafka-zookeeper.service
- 在打开的文件中输入以下内容:
[Unit]
Description=Kafka Zookeeper Service
After=network.target
[Service]
Type=forking
ExecStart=/bin/bash -c 'nohup /root/kafka/bin/zookeeper-server-start.sh /root/kafka/config/zookeeper.properties &'
User=root
Group=root
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 保存并关闭文件。
- 创建一个 systemd 服务文件用于启动 Kafka
sudo vi /etc/systemd/system/kafka.service
- 在打开的文件中输入以下内容:
[Unit]
Description=Kafka Server Service
After=network.target
[Service]
Type=forking
ExecStart=/bin/bash -c 'nohup /root/kafka/bin/kafka-server-start.sh /root/kafka/config/server.properties &'
User=root
Group=root
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 保存并关闭文件。
二、重新加载 systemd 配置并启用服务
- 重新加载 systemd 配置:
sudo systemctl daemon-reload
- 启用服务以实现开机自启动:
sudo systemctl enable kafka-zookeeper.service
sudo systemctl enable kafka.service
现在,每次 CentOS 系统启动时,会先启动 Zookeeper和Kafka。
kafka 测试
1. 创建主题
创建 test-topic 主题
/root/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic
如果 test-topic 主题已经存在,那么忽略这一步,直接进行第二步的发送消息。
2. 发送消息
/root/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
在控制台输入一些想要发送的内容。
3. 接受消息
/root/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
--from-beginning参数的作用是:
当启动消费者时,从指定主题的起始位置开始消费消息。如果没有这个参数,默认情况下消费者将从它上次停止的位置继续消费消息,或者如果是新的消费者组,它将从当前最新的消息位置开始消费。
例如,如果你的主题中已经积累了很多消息,使用--from-beginning可以确保消费者从主题的最开始读取所有的历史消息,而不是只读取新产生的消息。
总结
在centos环境下简单的下载安装了kafka,然后进行了简单的使用测试。