創(chuàng)建網(wǎng)絡(luò)
docker network create kafka-net --driver bridge
啟動(dòng)zookeeper
# 下載 zookeeper 鏡像
docker pull bitnami/zookeeper
# 啟動(dòng) zooker容器
docker run -d --name zookeeper-server --network kafka-net -e ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper
啟動(dòng)kafka 服務(wù)
# 下載 kafka鏡像
docker pull bitnami/kafka
# 啟動(dòng) kafka服務(wù)01
docker run -d --name kafka-server01 --network kafka-net -p 9092:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://10.154.132.105:9092 bitnami/kafka
# 啟動(dòng)kafka服務(wù)02
docker run -d --name kafka-server02 --network kafka-net -p 9093:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://0.0.0.0:9093 bitnami/kafka
創(chuàng)建主題
docker exec -it kafka-server01 /bib/bash
/opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test
生成者生成數(shù)據(jù)
docker exec -it kafka-server01 /bib/bash
# 指定主題
/opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
>123
>456
>789
消費(fèi)者消費(fèi)數(shù)據(jù)
docker exec -it kafka-server01 /bib/bash
# 指定主題
/opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --daemon
123
456
789
python 鏈接kafka服務(wù)
# 下載kafka相關(guān)python包
# pip install kafka-python
from kafka import KafkaProducer, KafkaConsumer
# 生產(chǎn)者示例
producer = KafkaProducer(bootstrap_servers='localhost:9092')
topic = 'test'
# 發(fā)送消息
producer.send(topic, b'Hello, Kafka!')
# 關(guān)閉生產(chǎn)者
producer.close()
# 消費(fèi)者示例
consumer = KafkaConsumer(topic, bootstrap_servers='localhost:9092', auto_offset_reset='earliest')
# 消費(fèi)消息
for message in consumer:
print(f"Received message: {message.value.decode('utf-8')}")
# 關(guān)閉消費(fèi)者
consumer.close()