1.拉取镜像
shell
docker pull bitnami/kafka:latest
2. 编写 docker-compose.yml
创建 docker-compose.yml
文件,并添加以下内容:
shell
version: "3"
services:
kafka:
image: 'bitnami/kafka:latest'
container_name: kafka
ports:
- "9092:9092"
- "9093:9093"
volumes:
- type: volume
source: kafka_standalone_data
target: /bitnami/kafka
read_only: false
environment:
- BITNAMI_DEBUG=yes
# 启用KRaft模式必须设置下面三个属性
- KAFKA_CFG_NODE_ID=1
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
# broker id
- KAFKA_BROKER_ID=1
# listener的各种配置
- KAFKA_CFG_LISTENERS=CONTROLLER://:9094,BROKER://:9092,EXTERNAL://:9093
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,BROKER:PLAINTEXT,EXTERNAL:PLAINTEXT
# 注意EXTERNAL配置的是当前Docker所在的主机地址,BROKER可以使用Docker内部的网络地址即可
- KAFKA_CFG_ADVERTISED_LISTENERS=BROKER://127.0.0.1:9092,EXTERNAL://host.docker.internal:9093
# 内部各个broker之间通信用的listener
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=BROKER
# 用来进行选举的Controller服务器,如果有多个Controller则都需要写上,这里本机
- [email protected]:9094
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
kafka_standalone_data:
driver: local
启动 Kafka 服务:
docker compose up -d
3. 创建 Kafka Topic
进入 Kafka 容器:
bash
docker exec -it kafka bash
使用 kafka-topics.sh
创建一个名为 test-topic
的 Topic:
css
kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic
验证 Topic 是否创建成功:
css
kafka-topics.sh --list --bootstrap-server localhost:9092
4. 生产和消费消息测试
生产者发送消息
css
kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
输入测试消息,例如:
Hello Kafka!
按 Ctrl + D
结束输入。
消费者接收消息
打开另一个终端,运行:
javascript
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
如果配置正确,你应该能看到生产者发送的消息 Hello Kafka!
。