【Python】Python 简单实现kafka消费和生产信息
使用Python模拟
生产者:
from pykafka import KafkaClient #from kafka import KafkaProducer import simplejson as json import logging import time import sys #logging.basicConfig(level = logging.INFO) client = KafkaClient(hosts = "47.104.108.21:9092" ) topic = client.topics['test'] producer = topic.get_producer() producer.start() # 生产消息 msg_dict = { "sleep_time": 10, "db_config" : { "database" : "test", "host" : "192.168.137.12", "user" : "root", "password" : "root" }, "table" : "msg", "msg" : "Hello World" } msg = json.dumps(msg_dict) producer.produce(msg) producer.stop()
消费者:
from pykafka import KafkaClient host = '47.104.108.21' client = KafkaClient(hosts="%s:9092" % host) print client.topics # 消费者 topic = client.topics['test'] consumer = topic.get_simple_consumer(consumer_group='test', auto_commit_enable=True, consumer_id='test') for message in consumer: if message is not None: print message.offset, message.value
摘自:http://www.cnblogs.com/LXJ416/p/8177359.html
Apache Kafka 是什么?
Kafka 是一个开源的分布式流处理平台,其简化了不同数据系统的集成。流指的是一个数据管道,应用能够通过流不断地接收数据。Kafka 作为流处理系统主要有两个用处:
- 数据集成: Kafka 捕捉事件流或数据变化流,并将这些数据送给其它数据系统,如关系型数据库,键值对数据库或者数据仓库。
- 流处理:Kafka接收事件流并保存在一个只能追加的队列里,该队列称为日志(log)。日志里的信息是不可变的,因此支持连续实时的数据处理和流转换,并使结果在系统级别可访问。
相比于其它技术,Kafka 拥有更高的吞吐量,内置分区,副本和容错率。这些使得 Kafka 成为大规模消息处理应用的良好解决方案。
Kafka 系统有三个主要的部分:
- 生产者(Producer): 产生原始数据的服务。
- 中间人(Broker): Kafka 是生产者和消费者之间的中间人,它使用API来获取和发布数据。
- 消费者(Consumer): 使用中间人发布的数据的服务。
配置环境
我们的项目将包括:
生产者:将字符串发送给 Kafka 消费者: 获取数据并展示在终端窗口中 Kafka: 作为中间人
安装需要的依赖包
pip install kafka-python
创建生产者
生产者是给 Kafka 中间人发送消息的服务。值得注意的是,生产者并不关注最终消费或加载数据的消费者。 创建生产者: 创建一个 producer.py 文件并添加如下代码:
import time
from kafka import SimpleProducer, KafkaClient
# connect to Kafka
kafka = KafkaClient('localhost:9092')
producer = SimpleProducer(kafka)
# Assign a topic
topic = 'my-topic'
创建消息:
循环生成1到100之间的数字
发送消息:
Kafka 消息是二进制字符串格式(byte)
以下是完整的生产者代码:
import time from kafka import SimpleProducer, KafkaClient # connect to Kafka kafka = KafkaClient('localhost:9092') producer = SimpleProducer(kafka) # Assign a topic topic = 'my-topic' def test(): print('begin') n = 1 while (n<=100): producer.send_messages(topic, str(n)) print "send" + str(n) n += 1 time.sleep(0.5) print('done') if __name__ == '__main__': test()
创建消费者
消费者监听并消费来自 Kafka 中间人的消息。我们的消费者应该监听 my-topic 主题的消息并将消息展示。
以下是消费者代码(consumer.py):
from kafka import KafkaConsumer #connect to Kafka server and pass the topic we want to consume consumer = KafkaConsumer('my-topic') print "begin" for msg in consumer: print msg
运行项目
确保 Kafka 在运行
打开两个终端,在第一个终端中运行消费者:
$ python consumer.py
在第二个终端运行生产者:
$ python producer.py
待续.
赠人玫瑰
手留余香
我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系!-杨绛先生
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【关注我】。

浙公网安备 33010602011771号