【Python】【Kafka】kafka读取所有数据——使用消费群组+offset

10 篇文章 0 订阅
1 篇文章 0 订阅

kafka为分布式消息队列,队列中的消息可以保存7天。当使用消费者读取kafka中数据时,会面临这样的问题:

当消费者进程中断后,再次进行消费时会发现,读取的位置当前获取的新数据,如果配置offset

auto_offset_reset='earliest'

会从kafka初始的数据消费,重复消费之前的数据。如果想要使消费者像下载文件一样,可以“设置断点继续重传”我们可以在定义

consumer时候这样做:

from kafka import KafkaConsumer

consumer = KafkaConsumer('stratum', group_id='my_group_new', auto_offset_reset='earliest', bootstrap_servers='kafka-001:9092','kafka-002:9092','kafka-003:9092'])
#consumer.subscribe(topics=('stratum','stratum1'))
for message in consumer:
    #print (message)
    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                          message.offset, message.key,
                                          message.value))

用于测试的producer代码:

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='kafka-001:9092','kafka-002:9092','kafka-003:9092'])
for _ in range(1):
    #producer.send('my_favorite_topic', b'some_message_bytes')
    value = b'{"user":"caohaitao"}'
    producer.send('stratum', value)
    value = b'{"user":"hehe"}'
    producer.send('stratum', value)
producer.flush()


小结:

1.kafka中使用消费群组,配置group_id可以实现,从上次中断的地方开始消费

2.使用auto_offset_reset='earliest'可以实现,在第一次使用group_id时可以从数据起始点开始消费


                
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值