本文将阐述如何用Docker在本地搭一套简单的 Kafka + Zookeeper
搭建
第一步:上GitHub 下载 或者 clone 这个项目
https://github.com/wurstmeister/kafka-dockergithub.com
这个项目的文档都偏向于如何在远端搭建 kafka,反而忽略(简单化)了本地使用的教程
第二步:修改 docker-compose-single-broker.yml 文件
把 KAFKA_ADVERTISED_HOST_NAME 改成 localhost ,改完后如下
version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: build: . ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: localhost KAFKA_CREATE_TOPICS: "test:1:1" KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock
第三步: 在对应的目录下,运行以下指令
docker-compose -f docker-compose-single-broker.yml up -d
第四步:确认 kafka 和 zookeeper 运行正常
在对应目录下 运行
docker-compose ps
可以看到
或者运行
docker ps
简单把玩 kafka
第一步:下载 官方 Kafka 源码包
参考官方文档 https://kafka.apache.org/quickstart 下载 kafka_2.12-2.4.0.tgz (当前版本),解压, 在解压目录下我们可以看到 一个叫 bin 的目录,里面存放了很多官方提供的 命令行工具
第二步:调用 bin 目录下的命令行工具 查看和创建 topic
从 docker-compose-single-broker.yml 可以看到,启动时会默认帮我们生成一个 topic 叫 test
运行以下指令看看 test topic 是不是真的存在
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
我们再创建一个叫 hello 的 topic
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic hello
运行成功可以看到
再次运行
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
第三步:调用 bin 目录下的命令行工具作为 producer 发送一些消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
我往 test topic 里发送了 “hello” 和 “world” 两条消息
第四步:调用 bin 目录下的命令行工具作为consumer 消费消息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
两条消息都成功收到了
以上实验都证明了本地 kafka 搭建成功了,除了使用命令行工具也可以写一些程序来尝试发送或者消费 kafka 里的消息
把玩结束后,只需要在 wurstmeister/kafka-docker 的目录下运行以下指令就能关闭本地的 kafka 和 zookeeper 的 Docker container 了
docker-compose down
最后附上使用上述方案本地搭起的docker的架构图
(图片来自 : https://github.com/wurstmeister/kafka-docker/wiki/Connectivity )