在 Kafka 0.8beta 中,可以使用下面提到的命令创建主题here http://kafka.apache.org/08/quickstart.html
bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 2 --partition 3 --topic test
上面的命令将创建一个名为“test”的主题,其中包含 3 个分区,每个分区有 2 个副本。
我可以使用 Java 做同样的事情吗?
到目前为止,我发现使用 Java 我们可以创建一个生产者,如下所示
Producer<String, String> producer = new Producer<String, String>(config);
producer.send(new KeyedMessage<String, String>("mytopic", msg));
这将创建一个名为“mytopic”的主题,并使用“num.partitions”属性指定分区数并开始生成。
但是有没有办法也定义分区和复制呢?我找不到任何这样的例子。如果我们不能,那么这意味着我们总是需要创建带有分区和复制的主题(根据我们的要求),然后使用生产者在该主题内生成消息。例如,如果我想以相同的方式创建“mytopic”但具有不同数量的分区(覆盖 num.partitions 属性),是否可以?
注意:我的答案涵盖 Kafka 0.8.1+,即截至 2014 年 4 月可用的最新稳定版本。
是的,您可以通过 Kafka API 以编程方式创建主题。是的,您可以指定所需的分区数量以及主题的复制因子。
请注意,最近发布的 Kafka 0.8.1+ 提供的 API 与 Kafka 0.8.0 略有不同(Biks 在其链接回复中使用了该 API)。我添加了一个在 Kafka 0.8.1+ 中创建主题的代码示例 https://stackoverflow.com/a/23360100/1743580对我对问题的答复我们如何使用 API 从 IDE 在 Kafka 中创建主题 https://stackoverflow.com/questions/16946778/how-can-we-create-a-topic-in-kafka-from-the-ide-using-api/Biks 上面提到的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)