apache-kafka - Kafka 0.8,是否可以使用java代码创建带有分区和复制的主题?

标签 apache-kafka

在 Kafka 0.8beta 中,可以使用如下所述的命令创建主题 here

    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+ 提供了与 Kafka 0.8.0(Biks 在他的链接回复中使用的)略有不同的 API。我添加了一个 code example to create a topic in Kafka 0.8.1+我对问题的回复How Can we create a topic in Kafka from the IDE using API Biks 上面提到的那个。

关于apache-kafka - Kafka 0.8,是否可以使用java代码创建带有分区和复制的主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18225263/

相关文章:

java - 为什么 KafkaUtils.createDirectStream 会抛出 NoSuchMethodError?

apache-kafka - Kafka主题被标记为删除但在kafka 0.9中没有被删除

java - Quarkus + Kafka + Smallrye 异常处理

apache-kafka - Kafka 忽略生产者的 `transaction.timeout.ms`

java - 尽管mapWithState中的元素相同,但为什么所有元素都被打印

apache-kafka - Apache Heron 中的 Kafka 集成

docker - 基于控制台的 dockerized kafka 消费者

java - 使用 Kafka Streams 处理复杂的 Avro 消息

apache-kafka - 什么会导致 Kafka 消费者出现 "Failed to get offsets by times"?

kubernetes - 代理可能不可用错误 Kafka 架构注册表