首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python3.6中将kafka主题的所有分区分配给消费者?

如何在Python3.6中将kafka主题的所有分区分配给消费者?
EN

Stack Overflow用户
提问于 2021-02-04 04:15:31
回答 1查看 237关注 0票数 0

我正在运行Python3.6和python-kafka 1.3.5

我有一个kafka主题,分区0-15,它们目前都有消息在里面。我希望我的使用者从所有分区中读取和提取消息。这就是我目前正在尝试做的事情

代码语言:javascript
运行
复制
import kafka
consumer = kafka.KafkaConsumer(bootstrap_servers='broker1:9092,broker2:9092,broker3:9092', sasl_mechanism='PLAIN', enable_auto_commit=False, group_id="my_test_group", auto_offset_reset='latest',max_poll_records=2000, heartbeat_interval_ms=2000, consumer_timeout_ms=1000)
kafka_partition0 = kafka.TopicPartition('my_topic', 0)
kafka_partition1 = kafka.TopicPartition('my_topic', 1)
kafka_partition2 = kafka.TopicPartition('my_topic', 2)
kafka_partition3 = kafka.TopicPartition('my_topic', 3)
kafka_partition4 = kafka.TopicPartition('my_topic', 4)
kafka_partition5 = kafka.TopicPartition('my_topic', 5)
kafka_partition6 = kafka.TopicPartition('my_topic', 6)
kafka_partition7 = kafka.TopicPartition('my_topic', 7)
kafka_partition8 = kafka.TopicPartition('my_topic', 8)
kafka_partition9 = kafka.TopicPartition('my_topic', 9)
kafka_partition10 = kafka.TopicPartition('my_topic', 10)
kafka_partition11 = kafka.TopicPartition('my_topic', 11)
kafka_partition12 = kafka.TopicPartition('my_topic', 12)
kafka_partition13 = kafka.TopicPartition('my_topic', 13)
kafka_partition14 = kafka.TopicPartition('my_topic', 14)
kafka_partition15 = kafka.TopicPartition('my_topic', 15)
consumer.assign([kafka_partition0, kafka_partition1, kafka_partition2, kafka_partition3, kafka_partition4, kafka_partition5, kafka_partition6, kafka_partition7, kafka_partition8, kafka_partition9, kafka_partition10, kafka_partition11, kafka_partition12, kafka_partition13, kafka_partition14, kafka_partition15])
messages = consumer.poll()

但是,当我查看messages变量中的键时,我只能看到来自分区7、11和15的消息

为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

发布于 2021-02-04 05:11:40

创建列表似乎没有必要(但列表理解会使代码变得更短)

这就是说,文档中的基本示例已经使用了所有分区

代码语言:javascript
运行
复制
from kafka import KafkaConsumer
consumer = KafkaConsumer('my_favorite_topic', bootstrap_servers='localhost:9092', group_id='my_favorite_group'))
for msg in consumer:
    print(msg)

当我查看messages变量中的键时,我只能看到来自分区7、11和15的消息

你多久看一次?它应该在使用时在分区之间循环。

数据实际上是在其他部分中产生的吗?如果不是,则不需要从它们轮询数据

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66035007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档