1. 安装
pip install kafka
2. 使用
分别启动zookeeper服务和一个broker节点
$ bin/zookeeper-server-start.sh config/zookeeper.properties
$ bin/kafka-server-start.sh config/server.properties
运行如下python程序用于生产消息
from kafka import KafkaProducer
# 创建生产者
producer = KafkaProducer(bootstrap_servers='127.0.0.1:9092')
for _ in range(3):
# 指定topic发送bytes类型的数据
producer.send('my_topic',b'Hello kafka')
producer.send('my_topic',b'Hello kafka')
运行消费者接收数据
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my_topic --from-beginning
Hello kafka
Hello kafka
Hello kafka
也可以使用如下python程序发送json格式数据
producer = KafkaProducer(bootstrap_servers='127.0.0.1:9092',value_serializer=lambda v: json.dumps(v).encode('utf-8'))
producer.send('my_topic', {'today': 'nice'})
运行消费者接收数据为
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my_topic --from-beginning
{"today": "nice"}
同样可以使用python来运行消费者
from kafka import KafkaConsumer
consumer=KafkaConsumer('world',group_id='consumer-20171017',bootstrap_servers=['127.0.0.1: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)
ouput
world:0:198: key=None value=b'{"today": "nice"}'
在爬虫运行过程中往往会有较高的并发向数据库写入数据,为了保证数据库连接安全、控制数据库写入的并发量可以将采集的数据通过生产者发送到节点,单独起一个进程消费数据并执行数据库写入动作。