PythonでのKafkaプロデューサーとコンシューマーの実装

kafka-pythonをインストールします。

C:\ anaconda3 \ Scripts> pip install kafka-python


import datetime
import json
from kafka
import KafkaProducer
from kafka import KafkaConsumer from kafka.errors import KafkaError

'' '
使用kafka-python的生产模块
' ''
class Kafka_producer():
def __init __(self、bootstrapServers、kafkaTopic):
self.bootstrapServers = bootstrapServers
self.kafkaTopic = kafkaTopic
self.producer = KafkaProducer(bootstrap_servers = self.bootstrapServers)

def sendjsondata(self、params):
try:
parmas_message = json.dumps(params)
producer = self.producer
future = producer.send(self.kafkaTopic 、parmas_message.encode( 'utf-8'))
producer.flush()
recordMetadata = future.get(timeout = 10)
print(recordMetadata、datetime.datetime.now()。strftime( '%Y%m%d%H%M%S'))
KafkaErrorをeとして除く:
印刷(E)

'' '
使用カフカ-pythonの的消费模块
'''
クラスKafka_consumer():
デフ__init __(自己、bootstrapServers、kafkaTopic、groupIdを):
self.kafkaTopic = kafkaTopic
self.bootstrapServers = bootstrapServers
self.groupId =のgroupId
自己.consumer = KafkaConsumer(self.kafkaTopic、group_id = self.groupId、bootstrap_servers = self.bootstrapServers)

def consumer_data(self):
try:
self.consumerのメッセージ:

BaseException以外の メッセージをeとして生成する:__ name__ == '__main__'の場合、
print(e)


bootstrapServers = ['ip1:port1'、 'ip2:port2'、 'ip3:port3']
topicStr = '主题'

print( '-' * 20)
print( '生产者')
print( '-' * 20)

producer = Kafka_producer(bootstrapServers、topicStr)
in id for range(5):
params = '{tst}:{null} ---' + str (id)
producer.sendjsondata(params)

print( '-' * 20)
print( '消费者')
print( '-' * 20)

groupId = 'group名称'
consumer = Kafka_consumer(bootstrapServers、topicStr、groupId)
メッセージ= consumer.consume_data()
メッセージのfor i:
print(i.value)


 

おすすめ

転載: www.cnblogs.com/WebLinuxStudy/p/12692830.html
おすすめ