繁体   English   中英

Confluent-Kafka Python:如何以编程方式列出所有主题

[英]Confluent-Kafka Python : How to list all topics programmatically

我有一个在本地系统中运行的 kafka 代理。 要使用我的基于 Django 的 web 应用程序与故障通信,我正在使用confluent-kafka包装器。 但是,通过浏览管理员 api,我找不到任何用于列出 kafka 主题的 api。 (主题是务实地创建的并且是动态的)。

有什么办法可以在我的程序中列出它们吗? 要求是,如果我的工作人员重新启动所有指定的收听这些主题的消费者,则必须重新初始化,因此我想循环到所有主题并为每个主题分配一个消费者。

您可以通过两种方式实现它:

from confluent_kafka import Consumer

consummer_config = {
    'bootstrap.servers': 'localhost:9092',
    'group.id': 'group1'
}
consumer = Consumer(consummer_config)
consumer.list_topics().topics

这将返回一个像这样的字典:

{'raw_request': TopicMetadata(raw_request, 4 partitions),
 'raw_requests': TopicMetadata(raw_requests, 1 partitions),
 'idw': TopicMetadata(idw, 1 partitions),
 '__consumer_offsets': TopicMetadata(__consumer_offsets, 50 partitions)}

另一种方式已经由@NYCeyes发布

这是如何做到的:

>>> from confluent_kafka.admin import AdminClient

>>> conf = {'bootstrap.servers': 'vps01:9092,vps02:9092,vps03:9092'}
>>> kadmin = AdminClient(conf)

>>> kadmin.list_topics().topics # Returns a dict(). See example below.
{'topic01': TopicMetadata(topic01, 3 partitions),}

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM