Kafka 0.8,是否可以使用java代码创建分区和复制主题?

Hil*_*ild 12 apache-kafka

在卡夫卡0.8beta可以使用类似下面的命令提到要创建的主题在这里

    bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 2 --partition 3 --topic test
Run Code Online (Sandbox Code Playgroud)

上面的命令将创建一个名为"test"的主题,每个分区有3个分区和2个副本.

我可以使用Java做同样的事情吗?

到目前为止,我发现使用Java我们可以创建一个生产者,如下所示

    Producer<String, String> producer = new Producer<String, String>(config);
    producer.send(new KeyedMessage<String, String>("mytopic", msg));
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为"mytopic"的主题,其中包含使用"num.partitions"属性指定的分区数并开始生成.

但有没有办法定义分区和复制呢?我找不到任何这样的例子.如果我们不能这样做意味着我们总是需要先创建包含分区和复制的主题(根据我们的要求),然后使用生产者在该主题中生成消息.例如,如果我想以相同的方式创建"mytopic"但是具有不同的分区数(覆盖num.partitions属性)是可能的吗?

Mic*_*oll 8

注意:我的答案涵盖Kafka 0.8.1+,即截至2014年4月的最新稳定版本.

是的,您可以通过Kafka API以编程方式创建主题.是的,您可以指定所需的分区数以及主题的复制因子.

请注意,最近发布的Kafka 0.8.1+提供的API与Kafka 0.8.0略有不同(Biks在他的链接回复中使用了它).我添加了一个代码示例来创建Kafka 0.8.1+中的主题,以回答我们如何使用 Biks上面提到的API从IDE在Kafka中创建主题的问题.