首先,先启动本地的Docker服务,然后获取合适版本的zookeeper(我这里默认是最新)
docker pull wurstmeister/zookeeper
再到docker仓库获取合适版本的kafka
docker pull wurstmeister/kafka
启动zookeeper服务
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
启动kafka,[local-ip]为自己主机IP,切记不可使用localhost来代替【本人使用localhost后,启动容器后失败退出】
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=[local-ip]:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://[local-ip]:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
首先,进入容器内部
docker exec -it kafka /bin/bash
再运行kafka生产者来发布消息,当前窗口称为【窗口A】
/opt/kafka_2.13-2.7.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
再重新开启一个窗口【窗口B】,运行kafka消费者,接受消息
/opt/kafka_2.13-2.7.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
在生产者窗口A中,我们可以注意到生产者前面出现“>
”符号,在后面位置输入内容然后按下回车,就可以到消费者窗口B中看到内容。这意味着简单的kafka结合zookeeper消息生产与消费就完成了
docker下kafka的配置文件和脚本文件都在:/opt/kafka_x.xx
# 指定对应的配置文件启动
kafka-server-start.sh $KAFKA_PATH/config/server.properties
# -daemon 以后台的方式启动
kafka-server-start.sh -daemon $KAFKA_PATH/config/server.properties
# 指定JMX port端口启动,指定jmx,可以方便监控kafka集群
JMX_PORT=9991 kafka-server-start.sh -daemon $KAFKA_PATH/config/server.properties
kafka-server-stop.sh
或
kill -9 pid # pid 进程号
查看当前服务器中所有的topic
# zhost为zookeeper服务器IP或dns映射域名,zport为端口
kafka-topics.sh --list --zookeeper host:port
创建topic
# --replication-factor: 必须参数,用来设置主题的副本数,每个主题可以有多个副本,副本位于集群中不同broker上,也就是说副本的数量不能超过broker的数量,否则创建主题时会失败
# --partitions: 必须参数,主题分区数
kafka-topics.sh --create --zookeeper zhost:zport --replication-factor 1 --partitions 1 --topic test
删除topic
kafka-topics.sh --delete --zookeeper zhost:zport --topic test
# 或
kafka-topics.sh --delete --bootstrap-server khost:kport --topic test
查看topic详情
kafka-topics.sh --topic test --describe --zookeeper zhost:zport
# 或
kafka-topics.sh --topic test --describe --bootstrap-server khost:kport
修改topic的分区数
kafka-topic.sh --zookeeper zhost --alter --partitions 2 --topic test
# 或
kafka-topic.sh --bootstrap-server khost --alter --partitions 2 --topic test
kafka自带了一个在终端演示生产者发布消息的脚本 --kafka-console-producer.sh
运行该脚本会启动一个进程,在运行该脚本时可以传递相应配置以覆盖默认配置。
参数
# 启动生产者,通过shell命令发送消息
# khost: kafka服务器,kport:端口
# --broker-list: 指的是kafka的服务端,可以是一个服务器也可以是集群
kafka-console-producer.sh --broker-list khost:kport --topic test
kafka自带了一个在终端演示消费者消费消息的脚本 --kafka-console-consumer.sh
# --from-beginning 查看这个topic所有数据
# --bootstrap-server: 指的是目标集群的服务器地址
kafka-console-consumer.sh --bootstrap-server khost:kport --from-beginning --topic test