Bisher habe ich noch keinen Python-Client gesehen, der das Erstellen eines Themas explizit implementiert, ohne die Konfigurationsoption zum automatischen Erstellen der Themen zu verwenden.So erstellen Sie ein Thema in Apache kafka mit Python
Antwort
Es scheint, dass es keine kafka Server api ist ein Thema zu erstellen, damit Sie Thema automatische Erstellung der oder die Kommandozeilen-Tool verwenden:
bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic test
Es sieht aus wie Sie können, können auf die folgenden Befehle verwenden sicherzustellen, dass Ihr Thema bereits vorhanden sein (ich nehme an, Sie die folgende kafka python Implementierung verwenden):
client = KafkaClient(...)
producer = KafkaProducer(...)
client.ensure_topic_exists('my_new_topic')
producer.send_messages('my_new_topic', ...)
Es ist schon zu spät. Ich weiß nichts über einen Befehl zum expliziten Erstellen der Themen, aber das folgende erstellt und fügt die Nachrichten hinzu.
ich ein Python kafka Produzent erstellt:
prod = KafkaProducer(bootstrap_servers='localhost:9092')
for i in xrange(1000):
prod.send('xyz', str(i))
in der Liste der Kafka Themen xyz
vorher nicht da war. Wenn ich die obige Methode gemacht habe, hat der Python-kafka-Client es erstellt und die Nachrichten hinzugefügt.
Eigentlich hat der Broker das Thema erstellt und nur, weil auto.topic.create.enable auf "true" gesetzt wurde . Alle Themen, die auf diese Weise erstellt wurden, weisen die Standardkonfiguration auf, die möglicherweise für Ihren Anwendungsfall geeignet ist oder nicht. –
Die Adminclient API wurde programmatisches Thema Erstellung und Konfiguration zu tun, brauchte nur in Kafka 0,11 (ursprünglich für Java)
erwartetEs wird Siehe fügen hinzu, dass Nicht-Java-Client-Bibliotheken diese Funktionalität hinzufügen, werden als im Laufe der Zeit. Prüfen Sie mit dem Autor des Kafka Python-Client Sie verwenden (es gibt mehrere), um zu sehen, ob und wann KIP-4 Admin-Protokoll-Unterstützung in der API
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
topic = 'topic-name'
producer.send(topic, final_list[0]).get(timeout=10)
Siehe sein wird, die nicht funktionieren wird . 'sure_topic_exists' funktioniert nur mit der aktivierten automatischen Themenerstellung. https://github.com/mumrah/kafka-python/blob/cd81cf0ec8c1b7e7651374c5d1cbd105d003d352/kafka/client.py#L305-L306 – zackdever