利用docker&docker-compose实现kafka消息通信

一、kafka架构:

参考文章:

(125条消息) Kafka的点对点模式、发布订阅模式、基础架构_godkzz的博客-CSDN博客_kafka发布订阅模式

(125条消息) Kafka原理及应用实践,用心看这篇就够了【重点】_sunnyday0426的博客-CSDN博客_kafka原理及应用

二、简单案例实践环境搭建

1、下载wurstmeister/zookeeper镜像:

docker pull wurstmeister/zookeeper

2、下载wurstmeister/kafka镜像

docker pull wurstmeister/kafka

二、docker实现kafka通信

1、创建wurstmeister/zookeeper镜像的容器zookeeper,端口映射为2181—>2181:

docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper

2、创建wurstmeister/kafka镜像的容器kafka01,

docker run --name kafka01 \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=172.18.0.1:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.18.0.1:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-d  wurstmeister/kafka

# 参数说明,这里我zk和kafka在同一台机器上
# -e KAFKA_BROKER_ID=0  在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
# -e KAFKA_ZOOKEEPER_CONNECT=zk机IP:2181/kafka    配置zookeeper管理kafka的路径zk机IP:2181/kafka
# -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka机IP:9092   把kafka的地址端口注册给zookeeper
# -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092      配置kafka的监听端口

3、docker ps -a查看运行中的容器

 4、运行并测试

创建topic

# 进入容器bash
#-d(分离模式,在后台运行) -i(即使没有附加,也保持STDIN打开) -t(分配一个伪终端)
docker exec -it kafka01 bash

# 进入kafka下bin目录
cd /opt/kafka_2.13-2.8.1/bin

# 创建一个kafka topic,记得修改zk机IP,运行结果是 Created topic test01.
kafka-topics.sh --create --zookeeper zk机ip:2181 --replication-factor 1 --partitions 1 --topic test01

生产者生产消息、消费者接收消息

# 运行一个生产者生产消息,输够了之后用crtl+c解决即可重新进入bash
kafka-console-producer.sh --broker-list localhost:9092 --topic test01

#随便输入几个测试消息,即可观察producer和consumer端的消息变化,比如输入如下消息:
{"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}

# 运行一个消费者消费消息(另起一个终端)
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test01 --from-beginning

 观察消息通信结果

三、docker-compose实现kafka通信

1、在某一个目录下,新建docker-compose.yml

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper01
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 172.18.0.1
      KAFKA_ZOOKEEPER_CONNECT: 172.18.0.1:2182
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.18.0.1:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
    container_name: kafka01
    tty: true
    privileged: true
    stdin_open: true

2、运行docker-compose.yml:

docker-compose -f docker-compose.yml up

3、通过compose建立容器kafka01和zookeeper之后,进行消息通信的测试和运行:

 创建topic

# 进入容器bash
#-d(分离模式,在后台运行) -i(即使没有附加,也保持STDIN打开) -t(分配一个伪终端)
docker exec -it kafka01 bash

# 进入kafka下bin目录
cd /opt/kafka_2.13-2.8.1/bin

# 创建一个kafka topic,记得修改zk机IP,运行结果是 Created topic test01.
kafka-topics.sh --create --zookeeper zk机ip:2181 --replication-factor 1 --partitions 1 --topic test01

生产者生产消息、消费者接收消息

# 运行一个生产者生产消息,输够了之后用crtl+c解决即可重新进入bash
kafka-console-producer.sh --broker-list localhost:9092 --topic test01

#随便输入几个测试消息,即可观察producer和consumer端的消息变化,比如输入如下消息:
{"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}

# 运行一个消费者消费消息(另起一个终端)
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test01 --from-beginning

 观察消息通信结果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古剑诛仙

你的鼓励是我创造的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值