kafka python使用方法_kafka python-如何提交分区?

本文介绍了如何使用Python的kafka库来操作Kafka主题的分区,包括创建KafkaConsumer实例,分配特定分区,设置分区偏移量,以及提交消息的偏移量。在处理多分区时,强调了手动分配和设置偏移量的重要性,并提醒了当自定义分区分配时,可能影响Kafka管理工具显示消费者信息的情况。文中还提供了一个更新的代码片段,以更高效地处理分区的偏移量设置。
摘要由CSDN通过智能技术生成

from kafka import KafkaConsumer

from kafka import TopicPartition

TOPIC = "test_topic"

PARTITION = 0

consumer = KafkaConsumer(

group_id=TOPIC,

auto_offset_reset="earliest",

bootstrap_servers="localhost:9092",

request_timeout_ms=100000,

session_timeout_ms=99000,

max_poll_records=100,

)

topic_partition = TopicPartition(TOPIC, PARTITION)

# format: topic, partition

consumer.assign([topic_partition])

consumer.seek(topic_partition, 1660000)

# format: TopicPartition, offset. 1660000 is the offset been set.

for message in consumer:

# do something这只分配一个分区并设置该分区的偏移量,如果有多个分区,则需要为每个分区分配一个,然后设置偏移量。

aalmeida88的答案有时对我有用,在某些情况下,它确实有用,aalmeida88给了我一些想法去寻找,它似乎也是一种有用的方法。

您可能需要注意的另一件事是,当您自己分配分区时,kafka管理器似乎无法获取使用者信息,这可能是因为当您分配分区时,您在kafka而不是zookeeper中设置它,因此kafka管理器可能无法获取该信息。

希望有帮助!

---编辑---

找一个更好的方法去做。topic_partition = TopicPartition(TOPIC,

message.partition)

consumer.seek(topic_partition, offset_value)

consumer.commit()

这将从从kafka获得的消息中提取分区信息,并保存该子句以手动分配分区,从而在程序中需要设置多个分区的偏移量(这并不少见)时带来方便。

注意:为了确保一个分区只设置一次,应该根据您的应用程序设置一个标志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值