环境:
python 3.5
kafka-python 1.4.6
kafka环境:2.11-2.30
zookeeper环境:同上(ps:现在下载kafka环境包的时候,会同时搭载zookeeper,不需要专门安装了)
第一步:
去网址:https://kafka.apache.org/downloads 下载kafka的压缩包
用解压工具解压缩到你想要的位置,我这里直接放到了D根目录上。
在该文件下,同时给配置了windows启动(bat),linux启动(sh) 的脚本。并且默认端口,kafka是9092,zookeeper是:2181
linux启动
windows启动
如果需要修改相关配置,请转至config下server.properties文件进行修改。具体参数请百度。
kafka-python的安装:
pip install kafka-python
检测是否安装成功:
第二步 启动:
先启动zookeeper:
启动:自己写个bat更方便启动
cd /d D:\kafka_2.11-2.3.0\bin\windows
start cmd /c "title start_zookeeper && zookeeper-server-start.bat d:\kafka_2.11-2.3.0\config\zookeeper.properties"
请换成自己的路径
出现这个就说明zookeeper启动成功了
启动:kafka
同样是一个bat
cd /d D:\kafka_2.11-2.3.0\bin\windows
start cmd /c "title start_kafka && kafka-server-start.bat d:\kafka_2.11-2.3.0\config\server.properties"
会出现一大串输出信息,一般不会出现错误。因为没设置类别(Topic),所以启动会有些慢。
此时,环境的配置和启动已经完成了。
第三步 测试:
生产者Producer:
from kafka import KafkaProducer
import json
def send_json():
producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
value_serializer=lambda v: json.dumps(v).encode('utf-8'))
for i in range(10):
msg = {'{}'.format(i): '我是第{}个'.format(i)}
producer.send('world', msg)
producer.close()
print('wanbi')
def send_str():
producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
value_serializer=lambda v: v.encode('utf-8'))
for i in range(10):
msg = '我是第{}个'.format(i)
producer.send('world', msg)
producer.close()
print('wanbi')
消费者Consumer:
from kafka import KafkaConsumer
import time
def log(str):
t = time.strftime(r"%Y-%m-%d_%H-%M-%S", time.localtime())
print("[%s]%s" % (t, str))
def consummer():
log('start consumer')
# 消费localhost:9092上的world 这个Topic,指定consumer group是consumer
consumer = KafkaConsumer('world', group_id='consumer', 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.decode('utf-8'))
log(recv)
# print(recv)
if __name__ == '__main__':
consummer()
因为kafka默认收录的字节类型的,所以,我们在传输的时候,必须要先encode(‘utf-8’)下,否则会报错的。
好了。到这里就完毕了。 一些其他的操作,等下一篇再来说吧
小伙伴们,可以去尝试操作了~~