Kafka 零基础入门(最基本用法)

很多人第一次学 Kafka:

一上来:

就看到:

txt 复制代码
Broker
Partition
Offset
Consumer Group

直接懵。

其实:

Kafka 最开始:

你只需要理解:

txt 复制代码
发消息
收消息

就够了。

别一开始:

研究底层。


一、Kafka 到底是什么

一句话:

txt 复制代码
Kafka = 存消息的地方

你可以理解成:

txt 复制代码
高级版消息队列

二、消息是什么

例如:

用户下单。

订单系统:

可以发送一条消息:

txt 复制代码
用户下单成功

Kafka:

负责:

txt 复制代码
保存这条消息

然后:

别的程序:

再去读取。


三、Kafka 最核心流程(必须理解)

Kafka:

本质:

就三步。


1. 生产者发消息

txt 复制代码
Producer

2. Kafka 存消息

txt 复制代码
Topic

3. 消费者读消息

txt 复制代码
Consumer

四、先理解 Topic(最重要)

Kafka 里面:

消息必须放到:

txt 复制代码
Topic

里面。


五、Topic 是什么

你可以理解成:

txt 复制代码
消息分类

例如:

txt 复制代码
订单消息
用户消息
日志消息

分别:

放不同 Topic。


六、最简单类比

你可以理解成:


QQ 群

txt 复制代码
Topic = 群聊

发消息的人

txt 复制代码
Producer

看消息的人

txt 复制代码
Consumer

七、Kafka 最基础流程图

txt 复制代码
生产者
↓
发送消息
↓
Kafka Topic
↓
消费者读取

八、Kafka 第一步:启动 Kafka

现在:

一般:

都用 Docker。


九、Docker 启动 Kafka(最简单)

先拉镜像:

bash 复制代码
docker pull bitnami/kafka

十、启动 Kafka

bash 复制代码
docker run -d \
--name kafka \
-p 9092:9092 \
-e KAFKA_CFG_NODE_ID=1 \
-e KAFKA_CFG_PROCESS_ROLES=broker,controller \
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
bitnami/kafka

十一、9092 是什么

Kafka 默认端口:

txt 复制代码
9092

以后:

Go 程序:

就连接:

txt 复制代码
localhost:9092

十二、创建 Topic

Kafka:

必须先有 Topic。


创建 order-topic

bash 复制代码
docker exec -it kafka kafka-topics.sh \
--create \
--topic order-topic \
--bootstrap-server localhost:9092

十三、查看 Topic

bash 复制代码
docker exec -it kafka kafka-topics.sh \
--list \
--bootstrap-server localhost:9092

如果看到:

txt 复制代码
order-topic

说明成功。


十四、发送消息(最重要)

现在:

开始发消息。


开启生产者

bash 复制代码
docker exec -it kafka kafka-console-producer.sh \
--topic order-topic \
--bootstrap-server localhost:9092

十五、现在发生了什么

你已经进入:

txt 复制代码
Kafka消息输入模式

终端:

会卡住。

这是正常的。


十六、输入消息

例如:

txt 复制代码
hello

回车。

再输入:

txt 复制代码
world

十七、这些消息去哪了

Kafka:

已经:

txt 复制代码
保存起来了

存进:

txt 复制代码
order-topic

十八、读取消息(消费者)

现在:

再开一个终端。


启动消费者

bash 复制代码
docker exec -it kafka kafka-console-consumer.sh \
--topic order-topic \
--from-beginning \
--bootstrap-server localhost:9092

十九、会看到什么

你刚刚发送的:

txt 复制代码
hello
world

都会打印出来。


二十、完整流程(你现在已经跑通了)

txt 复制代码
生产者
↓
hello
↓
Kafka Topic
↓
消费者
↓
读取hello

这就是:

Kafka 最基础用法。


二十一、Kafka 最核心理解

Kafka:

本质:

就是:

txt 复制代码
生产者写消息
消费者读消息

二十二、Go 操作 Kafka(重点)

真正开发:

不会手敲命令。

而是:

txt 复制代码
Go代码操作Kafka

二十三、安装 Kafka Go 库

bash 复制代码
go get github.com/segmentio/kafka-go

二十四、Go 发送消息(生产者)


示例

go 复制代码
package main

import (
	"context"

	"github.com/segmentio/kafka-go"
)

func main() {

	// 创建 writer(生产者)
	w := kafka.NewWriter(kafka.WriterConfig{
		Brokers: []string{"localhost:9092"},
		Topic:   "order-topic",
	})

	// 发消息
	w.WriteMessages(context.Background(),
		kafka.Message{
			Value: []byte("hello kafka"),
		},
	)
}

二十五、代码详细解析


NewWriter

go 复制代码
kafka.NewWriter()

表示:

txt 复制代码
创建Kafka生产者

Brokers

go 复制代码
Brokers: []string{"localhost:9092"}

Kafka 地址。


Topic

go 复制代码
Topic: "order-topic"

消息发到哪个 Topic。


WriteMessages

go 复制代码
w.WriteMessages()

真正发送消息。


Value

go 复制代码
Value: []byte("hello kafka")

消息内容。


二十六、Kafka 为什么用 \[\]byte

因为:

Kafka:

底层:

只认识:

txt 复制代码
二进制数据

所以:

字符串:

必须:

go 复制代码
[]byte(...)

转换。


二十七、Go 读取消息(消费者)


示例

go 复制代码
package main

import (
	"context"
	"fmt"

	"github.com/segmentio/kafka-go"
)

func main() {

	// 创建消费者
	r := kafka.NewReader(kafka.ReaderConfig{
		Brokers: []string{"localhost:9092"},
		Topic:   "order-topic",
		GroupID: "g1",
	})

	for {

		// 读取消息
		msg, _ := r.ReadMessage(context.Background())

		fmt.Println(string(msg.Value))
	}
}

二十八、代码解析


NewReader

go 复制代码
kafka.NewReader()

创建消费者。


GroupID

go 复制代码
GroupID: "g1"

消费者组。

现在:

先不用深究。

你可以简单理解:

txt 复制代码
消费者编号

ReadMessage

go 复制代码
r.ReadMessage()

从 Kafka 读取消息。


msg.Value

go 复制代码
msg.Value

消息内容。


二十九、为什么消费者一直 for

因为:

Kafka:

消息:

会不断产生。

所以:

消费者:

通常:

txt 复制代码
一直监听

三十、现在你已经掌握了 Kafka 最核心用法

你已经会:


创建 Topic

bash 复制代码
kafka-topics.sh

发消息

bash 复制代码
kafka-console-producer.sh

或者:

go 复制代码
WriteMessages()

收消息

bash 复制代码
kafka-console-consumer.sh

或者:

go 复制代码
ReadMessage()

三十一、真实项目里的 Kafka

真实开发:

最经典:

就是:


用户下单

订单服务:

txt 复制代码
发Kafka消息

其他服务

消费:

  • 库存
  • 短信
  • 邮件
  • 推荐系统

三十二、最后一句总结(必须记住)

Kafka 最核心:

txt 复制代码
Producer 发消息
↓
Topic 存消息
↓
Consumer 读消息

你现在:

最重要先会:

txt 复制代码
发
收

别一开始:

研究:

txt 复制代码
Partition
Offset
副本机制

容易直接崩。

相关推荐
月落归舟21 小时前
从单机到分布式:互联网系统架构演进全流程
分布式·系统架构
搬砖柯1 天前
系列12-接口压测怎么做成平台能力?自研 httpx 引擎、分布式 Worker 与 Locust 选型对照
分布式·测试工具·性能优化·开源·自动化·httpx
折哥的程序人生 · 物流技术专研1 天前
Java面试通关⑭:分布式理论与架构全集
分布式·微服务·校招·分布式事务·cap·java面试·最终一致性
Kyrie_Li1 天前
Spring Boot Kafka 生产级配置全解析:从入门到精通
spring boot·后端·kafka
格子软件1 天前
2026年GEO贴牌代理:分布式多级分账状态机源码深度解构
java·vue.js·分布式·vue·geo
Evand J2 天前
【论文复现】MATLAB例程,存在测距误差的WSN无锚点分布式自定位,《WSN中存在测距误差的无锚点分布式自定位方法》
开发语言·分布式·matlab·定位·导航·wsn
格子软件2 天前
2026年分布式GEO代理流量调度:源码级状态机防重挂实战
java·vue.js·人工智能·spring boot·分布式·vue
2301_801184752 天前
kafka-zookeeper
分布式·zookeeper·kafka
Devin~Y2 天前
抖音级短视频推荐与直播带货平台面试实战:从 Java 微服务到 RAG 智能客服全链路解析
java·spring boot·redis·spring cloud·kafka·agent·rag
大明者省2 天前
四大模态大模型训练体系全解析(架构+范式+分布式+算力成本·)
笔记·分布式·架构