如何在Docker中简单配置Kafka
注意:切记修改命令行中的内网ip和外网ip
1.在 docker
中拉取 kafka
和 zookeeper
镜像
[root@VM-24-5-centos ~]# docker pull wurstmeister/kafka
[root@VM-24-5-centos ~]# docker pull wurstmeister/zookeeper
2. 启动 zookeeper
[root@VM-24-5-centos ~]# docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
3. 启动 kafka
- 作用于虚拟机的内网
## KAFKA_ZOOKEEPER_CONNECT 需要修改成zookeeper所在容器IP(可以使用ifconfig进行查看),容器之间是可以通过IP访问的,但是不能填写成虚拟IP
[root@VM-24-5-centos ~]# docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.1:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -t wurstmeister/kafka:latest
- 作用于外网的环境
[root@VM-24-5-centos ~]# docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=(服务器外网IP):2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://(服务器外网IP):9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -t wurstmeister/kafka:latest
# 2.然后再本机的hosts文件中中添加 服务器的外网ip和对应的服务器名字,例如:(服务器外网IP) VM-24-5-centos
# 3.java代码中直接使用代码:
# // 设置配置文件的方式
Properties properties = new Properties();
# // 设置链接的主服务器
# // 连接当前远程的服务器出现了url错误,需要进行修改,切记加上9092
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "VM-24-5-centos:9092");
- 方案2:整合SpringBoot
[root@VM-24-5-centos ~]# docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=(服务器内网IP):2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://(服务器外网IP):9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka:latest
4. 查看 kafka
的容器ID
[root@VM-24-5-centos ~]# docker ps |grep kafka
5. 查看 kafka
和 zookeeper
是否启动成功
[root@VM-24-5-centos ~]# docker ps
6. 进入 kafka
容器中
[root@VM-24-5-centos ~]# docker exec -it b632402293ba /bin/bash
- 查看相关的命令
# 查看topic的命令
bash-5.1# /opt/kafka/bin/kafka-topics.sh
# 查看生产者端的命令
bash-5.1# /opt/kafka/bin/kafka-console-producer.sh
# 查看消费者端的命令
bash-5.1# /opt/kafka/bin/kafka-console-producer.sh
7. 创建 topic
bash-5.1# /opt/kafka/bin/kafka-topics.sh --zookeeper (服务器内网IP):2181 --create --replication-factor 1 --partitions 1 --topic mykafkadk
Created topic mykafkadk. # 表示创建成功
8. 查看指定 topic
的详细描述信息
bash-5.1# /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic mykafkadk --describe
Topic: mykafkadk TopicId: DrgX_OZ_TBikrvzxiTO-9Q PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes=1073741824
Topic: mykafkadk Partition: 0 Leader: 1 Replicas: 1 Isr: 1
9. 查看创建的所有 topic
bash-5.1# /opt/kafka/bin/kafka-topics.sh --zookeeper 172.17.0.1:2181 --list
mykafkadk
10. 向指定的 topic
中进行发送消息
bash-5.1# /opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic mykafkadk
>1
>2
11. 消费者进行消费指定 topic
中的消息
只会消费连接上之后生产者发送的消息
bash-5.1# /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mykafkadk
2
- –from-beginning:
会消费所有的发送到broker中的消息
bash-5.1# /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mykafkadk --from-beginning
1
2