项目02:Consumer Group
演示 Kafka 消费者组的工作机制和分区分配。
功能
- 生产者持续发送带 key 的消息(同一 key 进入同一分区)
- 多个消费者组成消费者组共同消费
- 支持手动 offset 提交和重平衡通知
- 启动/停止消费者观察分区重新分配
环境准备
bash
# 启动 Kafka
docker-compose up -d
# 创建主题(6个分区,便于观察分配)
docker exec -it <kafka-container> kafka-topics.sh \
--create --topic group-topic --partitions 6 --replication-factor 1 \
--bootstrap-server localhost:9092运行
bash
# 1. 启动生产者(持续发送消息)
go run producer/main.go
# 2. 启动第一个消费者
go run consumer/main.go consumer-1
# 3. 另开终端启动第二个消费者
go run consumer/main.go consumer-2
# 4. 再开一个启动第三个消费者
go run consumer/main.go consumer-3观察现象
- 初始只有 consumer-1:分配到所有 6 个分区
- 启动 consumer-2:分区重新分配,各消费 3 个
- 启动 consumer-3:各消费 2 个分区
- 停止某个消费者:分区重新分配给存活消费者
代码结构
02-consumer-group/
├── docker-compose.yml
├── producer/
│ └── main.go # 带 key 的生产者
├── consumer/
│ └── main.go # 消费者组(手动提交)
└── go.mod