一、环境搭建
安装kafka之前需要先安装zookeeper。
1、获取镜像
docker pull zookeeper
docker pull wurstmeister/kafka
2、
运行容器,先运行zookeeper再运行kafka
docker run -d --name zookeeper -p 2181:2181 zookeeper
运行kafka
docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 wurstmeister/kafka
这里,我们链接了ZooKeeper容器,并且设置了几个环境变量来配置Kafka。
在这个命令中:
- --name kafka: 设置容器的名字为“kafka”。
- -p 9092:9092: 将容器的9092端口映射到宿主机的9092端口。
- --link zookeeper:zookeeper: 连接到名为“zookeeper”的另一个Docker容器,并且在当前的容器中可以通过zookeeper这个别名来访问它。
- --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181: 设置环境变量,指定ZooKeeper的连接字符串。
- --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092: 设置环境变量,指定Kafka的advertised listeners。
- --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092: 设置环境变量,指定Kafka的listeners。
- --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1: 设置环境变量,指定offsets topic的副本因子。
- wurstmeister/kafka: 使用的Docker镜像名字。
确保在运行这个命令之前ZooKeeper容器已经在运行,并且可以通过zookeeper:2181
来访问。如果你的ZooKeeper容器有一个不同的名字或者你使用的是不同的网络设置,你需要相应地调整--link
和KAFKA_ZOOKEEPER_CONNECT
的值。
二、验证
进入kafka容器内部,并进入/opt/kafka_2.13-2.8.1/bin目录下。
1.创建一个topic
kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic customs-transfer-gw
2.创建一个生产者
kafka-console-producer.sh --broker-list localhost:9092 --topic customs-transfer-gw
3.创建一个消费者
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic customs-transfer-gw --from-beginning