【发布时间】:2013-08-16 00:34:09
【问题描述】:
在 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.javaapi.producer.ProducerAPI 可以创建主题,但分区数将基于配置文件中num.partitions属性中提到的值。要使用自定义分区创建主题,我认为唯一的方法是使用上面提到的控制台脚本。在这种情况下,必须先创建主题,然后生产者才能开始生产。 -
我已经在下面提到的链接Create Kafka Topic using Java 中回复了同样的问题如果您需要任何进一步的帮助或代码 sn-p。让我知道我将与 maven 依赖共享代码
标签: apache-kafka