到目前为止,我还没有看到一个python客户端明确地实现主题的创建,而不使用配置选项自动创建主题。
答案 0 :(得分:3)
您可以使用kafka-python
或confluent_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
预计非Java客户端库也会随着时间的推移添加此功能。请与您正在使用的Kafka Python客户端的作者(有几个)一起查看是否以及何时将在API中使用KIP-4管理协议支持
答案 6 :(得分:0)
karma