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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM