如何使用python在apache kafka中创建主题

时间:2014-09-24 16:03:54

标签: python apache-kafka kafka-python

到目前为止,我还没有看到一个python客户端明确地实现主题的创建,而不使用配置选项自动创建主题。

7 个答案:

答案 0 :(得分:3)

您可以使用kafka-pythonconfluent_kafka客户端以编程方式创建主题,该客户端是librdkafka的轻量级包装。

使用kafka-python

MyCompanyName (6W9G86W4T4)

使用confluent_kafka

39cd1593-32fc-420a-a0fe-03f12d7e631f

答案 1 :(得分:2)

如果您可以运行confluent_kafka(Python)v0.11.6或更高版本,则下面是如何创建kafka主题列出kafka主题删除kafka主题

>>> import confluent_kafka.admin, pprint

>>> conf        = {'bootstrap.servers': 'broker01:9092'}
>>> kafka_admin = confluent_kafka.admin.AdminClient(conf)

>>> new_topic   = confluent_kafka.admin.NewTopic('topic100', 1, 1)
                  # Number-of-partitions  = 1
                  # Number-of-replicas    = 1

>>> kafka_admin.create_topics([new_topic,]) # CREATE (a list(), so you can create multiple).
    {'topic100': <Future at 0x7f524b0f1240 state=running>} # Stdout from above command.

>>> pprint.pprint(kafka_admin.list_topics().topics) # LIST
    {'topic100' : TopicMetadata(topic100, 1 partitions),
     'topic99'  : TopicMetadata(topic99,  1 partitions),
     'topic98'  : TopicMetadata(topic98,  1 partitions)}

并使用同一kafka_admin对象删除kafka主题,这是

kafka_admin.delete_topics(['topic99', 'topic100',]) # DELETE

希望这些操作对您有帮助。

答案 2 :(得分:1)

似乎没有kafka服务器api来创建主题,所以你必须使用主题自动创建或命令行工具:

bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic test

答案 3 :(得分:1)

看起来您可以使用以下内容来确保您的主题已经存在(我假设您正在使用以下kafka python实现):

client = KafkaClient(...)
producer = KafkaProducer(...)
client.ensure_topic_exists('my_new_topic')
producer.send_messages('my_new_topic', ...)

答案 4 :(得分:0)

已经太晚了。我不知道有关显式创建主题的命令,但以下内容创建并添加了消息。

我创建了一个python kafka制作人:

prod = KafkaProducer(bootstrap_servers='localhost:9092')
for i in xrange(1000):
    prod.send('xyz', str(i))

在Kafka主题列表xyz之前没有。当我使用上述方法时,Python-kafka客户端创建了它并将消息添加到它。

答案 5 :(得分:0)

在Kafka 0.11(最初用于Java)中添加了进行编程主题创建和配置所需的AdminClient API

请参阅https://cwiki.apache.org/confluence/display/KAFKA/KIP-117%3A+Add+a+public+AdminClient+API+for+Kafka+admin+operations

预计非Java客户端库也会随着时间的推移添加此功能。请与您正在使用的Kafka Python客户端的作者(有几个)一起查看是否以及何时将在API中使用KIP-4管理协议支持

请参阅https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations

答案 6 :(得分:0)

karma