python kafka offset_python对kafka的基本操作

- coding:utf-8 --

from kafka import KafkaProducer

from kafka import KafkaConsumer

from kafka.structs import TopicPartition

import time

bootstrap_servers = []

class OperateKafka:

def init(self,bootstrap_servers,topic):

self.bootstrap_servers = bootstrap_servers

self.topic = topic

"""生产者"""

def produce(self):

producer = KafkaProducer(bootstrap_servers=self.bootstrap_servers)

for i in range(4):

msg = "msg%d" %i

producer.send(self.topic,key=str(i),value=msg)

producer.close()

"""一个消费者消费一个topic"""

def consume(self):

#consumer = KafkaConsumer(self.topic,auto_offset_reset=‘earliest‘,group_id="testgroup",bootstrap_servers=self.bootstrap_servers)

consumer = KafkaConsumer(self.topic,bootstrap_servers=self.bootstrap_servers)

print consumer.partitions_for_topic(self.topic) #获取test主题的分区信息

print consumer.topics() #获取主题列表

print consumer.subscription() #获取当前消费者订阅的主题

print consumer.assignment() #获取当前消费者topic、分区信息

print consumer.beginning_offsets(consumer.assignment()) #获取当前消费者可消费的偏移量

consumer.seek(TopicPartition(topic=self.topic, partition=0), 1) #重置偏移量,从第1个偏移量消费

for message in consumer:

print ("%s:%d:%d: key=%s value=%s"

% (message.topic,message.partition,message.offset, message.key,message.value))

"""一个消费者订阅多个topic """

def consume2(self):

consumer = KafkaConsumer(bootstrap_servers=[‘192.168.124.201:9092‘])

consumer.subscribe(topics=(‘TEST‘,‘TEST2‘)) #订阅要消费的主题

print consumer.topics()

print consumer.position(TopicPartition(topic=‘TEST‘, partition=0)) #获取当前主题的最新偏移量

for message in consumer:

print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,

message.offset, message.key,

message.value))

"""消费者(手动拉取消息)"""

def consume3(self):

consumer = KafkaConsumer(group_id="mygroup",max_poll_records=3,bootstrap_servers=[‘192.168.124.201:9092‘])

consumer.subscribe(topics=(‘TEST‘,‘TEST2‘))

while True:

message = consumer.poll(timeout_ms=5) #从kafka获取消息

if message:

print message

time.sleep(1)

def main():

bootstrap_servers = [‘192.168.124.201:9092‘]

topic = "TEST"

operateKafka = OperateKafka(bootstrap_servers,topic)

operateKafka.produce()

#operateKafka.consume()

#operateKafka.consume2()

operateKafka.consume3()

main()

原文地址:http://blog.51cto.com/xujingbo/2154987

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值