快速上手Kafka,简易版

查看本机配置

检查JDK是否安装

复制代码
java -version

下载kafka、Zookeeper安装包

在~目录下创建一个kafka_test目录,进入该目录,下载kafka安装包跟Zookeeper安装包

bash 复制代码
wget https://archive.apache.org/dist/kafka/3.8.0/kafka_2.13-3.8.0.tgz
bash 复制代码
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4.tar.gz

解压缩kafka安装包

复制代码
tar -zxvf kafka_2.13-3.8.0.tgz

递归创建/app/kafka目录,将kafka安装包剪切到/app/kafka目录下

bash 复制代码
mkdir -p /app/kafka
bash 复制代码
mv kafka_2.13-3.8.0 /app/kafka/

后台启动kafka跟zookeeper

进入/app/kafka/kafka_2.13-3.8.0目录,启动zookeeper做配置中心,使用nohup命令使当前程序启动不占用控制台输出,即后台启动

bash 复制代码
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

查看zookeeper进程是否启动成功:jps 后台启动kafka进程

bash 复制代码
nohup bin/kafka-server-start.sh config/server.properties &

查看kafka进程是否启动成功 kafka的工作机制:基于不同的topic来发送、接收业务消息,如订单,用户消息,所以我们先要创建topic,这里提供topic的查看文档帮助命令

bash 复制代码
bin/kafka-topics.sh --help

基于进程号查看Kafka占用的端口号(默认9092)

创建topic

创建一个名为test的topic

bash 复制代码
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test

查看topic

bash 复制代码
bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

创建生产者

创建一个基于控制台的生产者,控制台发送消息如需删除字符按住Ctrl+Backspace

发消息

bash 复制代码
bin/kafka-console-producer.sh  --bootstrap-server localhost:9092 --topic test

复制该窗口,创建消费者,默认从启动消费者的那一刻开始从队列的最后位置开始消费,如果需要从头消费历史消息,可以加参数 --from-beginning

消费方式:

1.默认消费:

bash 复制代码
bin/kafka-console-consumer.sh  --bootstrap-server localhost:9092 --topic test

2.从头消费:

bash 复制代码
bin/kafka-console-consumer.sh  --bootstrap-server localhost:9092 --topic test --from-beginning

3.指定位置开始消费

bash 复制代码
bin/kafka-console-consumer.sh  --bootstrap-server localhost:9092 --topic test --partition 0 --offset 2

消息存储在partition中,这里指定从索引2的消息开始消费

因为两个窗口分别属于不同的进程,所以也证明了进程通信可以通过消息队列来实现

消费者组

创建消费者组

同一个消费者组中的消息只会被消费一次,同一个消息可以被不同的消费组消费,创建三个消费组(其中两个消费者组名字一致)

bash 复制代码
bin/kafka-console-consumer.sh  --bootstrap-server localhost:9092 --topic test --group testGroup
bash 复制代码
bin/kafka-console-consumer.sh  --bootstrap-server localhost:9092 --topic test --group testGroup2

窗口控制台2阻塞无输出,可以看到,同一个消费者组中的消息只会被消费一次(原因,同一个消费组共享同一个Offset),同一个消息可以被不同的消费组消费

查看具体消费者组的消费情况

bash 复制代码
bin/kafka-consumer-groups.sh  --bootstrap-server localhost:9092 --describe --group testGroup2

其中的LAG表示还未消费的消息数,LOG-END-OFFSET表示总的消息数,CURRENT-OFFSET表示当前消费的最后一条消息的编号,即索引

至此,一个简易版的消息队列就搭建完成,第一次写,更多的是记录学习历程,后续将继续更新,希望对您有帮助哈哈

相关推荐
中国胖子风清扬23 分钟前
Rust 日志库完全指南:从入门到精通
spring boot·后端·rust·学习方法·logback
玉衡子27 分钟前
MySQL基础架构全面解析
数据库·后端
郭京京40 分钟前
goweb内置的 net/http 包
后端·go
dylan_QAQ41 分钟前
Java转Go全过程06-工程管理
java·后端·go
用户40993225021244 分钟前
如何用FastAPI玩转多模块测试与异步任务,让代码不再“闹脾气”?
后端·ai编程·trae
考虑考虑1 小时前
Postgerssql格式化时间
数据库·后端·postgresql
Chan162 小时前
【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据
java·spring boot·后端·sql·spring·intellij-idea·echarts
库库林_沙琪马2 小时前
REST接口幂等设计深度解析
spring boot·后端
IT_陈寒2 小时前
Redis性能提升50%的7个关键优化策略,90%开发者都不知道第5点!
前端·人工智能·后端
智商偏低2 小时前
ASP.NET Core 身份验证概述
后端·asp.net