Как описать тему с помощью клиента kafka в Python - PullRequest
0 голосов
/ 22 мая 2019

Я новичок в клиенте kafka на python, мне нужна помощь, чтобы описать темы с помощью клиента.

Мне удалось перечислить все мои темы по кафке, используя следующий код: -

consumer = kafka.KafkaConsumer(group_id='test', bootstrap_servers=['kafka1'])
topicList = consumer.topics()

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

После обращения к нескольким статьям и примерам кода я смог сделать это через description_configs, используя confluent_kafka.

Ссылка 1 [Confluent-kafka-python] Ссылка 2 Образец Git

Ниже приведен мой пример кода !!

from confluent_kafka.admin import AdminClient, NewTopic, NewPartitions, ConfigResource
import confluent_kafka
import concurrent.futures

#Creation of config
conf = {'bootstrap.servers': 'kafka1','session.timeout.ms': 6000}
adminClient = AdminClient(conf)
topic_configResource = adminClient.describe_configs([ConfigResource(confluent_kafka.admin.RESOURCE_TOPIC, "myTopic")])
    for j in concurrent.futures.as_completed(iter(topic_configResource.values())):
        config_response = j.result(timeout=1)
0 голосов
/ 23 мая 2019

Интересно, что для Java эта функциональность (describeTopics()) находится внутри KafkaAdminCLient.java .

Итак, я пытался найти аналог Python, аналогичный, и я обнаружил, хранилище кодов kafka-python .

Документация (встроенные комментарии) в эквиваленте admin-client в пакете kafka-python гласит:

describe topics functionality is in ClusterMetadata
Note: if implemented here, send the request to the controller

Затем я переключился на Файл cluster.py в том же хранилище.Он содержит функцию topics(), которую вы использовали для получения списка тем, и следующие 2 функции, которые могут помочь вам в достижении функциональности describe:

  1. partitions_for_topic() - Возврат наборавсе разделы по теме (доступны или нет)
  2. available_partitions_for_topic() - вернуть набор разделов с известными лидерами

Примечание : я не пробовал этоЯ не уверен, что поведение будет идентичным тому, что вы увидите в результате для команды kafka-topics --describe ..., но стоит попробовать.

Надеюсь, это поможет!

...