kafka系列二(docker的单机版kafka搭建以及python操作)

一、采用docker搭建一个kafka的单机

1.1    拉取镜像

docker pull wurstmeister/zookeeper

docker pull wurstmeister/kafka

1.2    启动容器

docker run -d --name zookeeper -p 2181 --volume /etc/localtime:/etc/localtime -t wurstmeister/zookeeper

docker run -dit --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_PORT=9092 --env KAFKA_ADVERTISED_HOST_NAME=localhost  --volume /etc/localtime:/etc/localtime wurstmeister/kafka

 

至此简单的测试环境构建完成,不要太简单。

中间可能遇到一个问题:

问题一、while creating ephemeral at /brokers/ids/1, node already exists

原因是本地记录了brokers和现在运行的不一样。是由于你上次创建时,保存下来的。需要修改本地配置或者容器中的配置,保证两个一致即可。

find / -name 'server.properties'你可以找到本地的配置config里的server.properties.将所有的id都改成1,重启docker,你会发现奇迹。

问题二、partitions have leader brokers without a matching listener

不烦重新建立一个新的topic,用新的进行操作,你会发现可以了

 

Python操作生产者:

 import json

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')

producer.send('test', b"this is a python to kafka")

producer.close()

 

python操作消费者:

from kafka import KafkaConsumer

consumer = KafkaConsumer('test', bootstrap_servers=['localhost:9092'])

for msg in consumer:

    recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value)

    print(recv)

posted on 2020-08-02 17:55  星星眨着眼  阅读(1556)  评论(0编辑  收藏  举报

导航