2014-09-24 134 views

回答

1

似乎有那么你必须使用主题自动创建的或命令行工具没有卡夫卡服务器API来创建一个话题:

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

看起来你可以可以使用下面的方法确保你的话题已经存在(我假设你正在使用以下kafka python实现):

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

这是行不通的。 'ensure_topic_exists'只适用于启用自动主题创建。 https://github.com/mumrah/kafka-python/blob/cd81cf0ec8c1b7e7651374c5d1cbd105d003d352/kafka/client.py#L305-L306 – zackdever 2015-05-15 00:48:01

0

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

我创建了一个python卡夫卡制作:

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

在卡夫卡主题xyz是不存在先前的列表。当我做了上面的方法时,Python-kafka客户端创建了它并添加了消息。

+1

实际上,代理人创建了主题,只是因为auto.topic.create.enable被设置为“true” 。以这种方式创建的所有主题将具有默认配置,可能会或可能不会对您的用例有好处。 – 2017-06-21 06:11:05

0

做编程主题创建和配置所需的的AdminClient API卡夫卡0.11刚刚添加(最初为Java)

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

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

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

0
from kafka import KafkaProducer 

producer = KafkaProducer(bootstrap_servers=['localhost:9092']) 
topic = 'topic-name' 

producer.send(topic, final_list[0]).get(timeout=10)