python操作kafka
kafka命令行操作
# 创建主题
kafka-topics.sh --zookeeper localhost:2181 --create --replication-factor 1 --partitions 3 --topic userlog
# 查看所有主题
kafka-topics.sh --zookeeper localhost:2181 --list
# 查看主题
kafka-topics.sh --zookeeper localhost:2181 --describe --topic userlog
# 创建生产者
kafka-console-producer.sh --broker-list IP:9092 --topic userlog
# 创建消费者
kafka-console-consumer.sh --bootstrap-server IP:9092 --from-beginning --topic userlog
利用python代码使用kafka
python生成producer
from kafka import KafkaProducer
# 创建生产者
producer = KafkaProducer(bootstrap_servers='IP:9092')
msg = '哈哈'.encode('utf-8') # 发送内容,必须是bytes类型
# 可以通过send方法中的partition参数指定分区传入
producer.send('userlog', msg, partition=0)
producer.close()
这里的producer.close()非常关键, 如果不写,主线程不会等待producer发送完消息,这样的话,如果主线程结束,producer还没发送完消息,就会发送失败,但是代码不会报错,消息又没进入到kafka,所以一定要加上,这样主线程就会等待producer发送完消息
传入json数据
from kafka import KafkaProducer
import json
# 连接kafka
producer = KafkaProducer(bootstrap_servers='IP:9092',
# 传入json数据时,可用value_serializer参数进行处理
value_serializer=lambda x: json.dumps(x, ensure_ascii=False).encode('utf-8')
)
msg = {
"text":</