首页 > 解决方案 > 通过 kafka-python 库检查 kafka 主题是否存在于 python 中,而不使用消费者和 shell 命令

问题描述

[这不是一个重复的问题,因为即使堆栈溢出有类似的问题,但在我的情况下没有答案。因此,我在这里提出我的疑问。]

我想获取可用 Kafka 主题的列表并检查特定主题是否存在。我想在不使用消费者和任何 shell 命令的情况下做到这一点。我正在通过库本身寻找解决方案。因此,要获取我所做的 kafka 主题列表 -

import kafka
client = kafka.KafkaClient(bootstrap_servers='localhost:9092')
topicList = client.topic_partitions

但是,在这里我收到错误 -

'KafkaClient' object has no attribute 'topic_partitions'

如果有人能告诉我如何修复错误或建议我任何其他解决方案,那将是一个很大的帮助。提前致谢。

标签: pythonapache-kafka

解决方案


如果不创建 KafkaConsumer 客户端,您将无法执行此操作。只有在将主题分区分配给特定消费者之后,您才能在 kafka 中获得主题分区。

您必须使用KafkaConsumer客户端来检索主题。

其他方法是使用confluent-kafka消费者客户端或管理客户端,尽管后者会重新调整有关集群的元数据,包括主题分区。使用管理员客户端,您可以执行以下操作:

from confluent_kafka.admin import AdminClient
admin_client = AdminClient({'bootstrap.servers': 'localhost:9002'})
admin_client.list_topics().topics

{'topic1': TopicMetadata(topic1, $N partitions),}

推荐阅读