我正在使用kafka-node link api来创建kafka主题。我没有找到如何使用分区创建kafka主题。
var kafka = require('kafka-node'),
Producer = kafka.Producer,
client = new kafka.Client(),
producer = new Producer(client);
// Create topics sync
producer.createTopics(['t','t1'], false, function (err, data) {
console.log(data);
});
// Create topics async
producer.createTopics(['t'], true, function (err, data) {});
producer.createTopics(['t'], function (err, data) {});// Simply omit 2nd arg
如何使用nodejs中的分区创建kafka主题。
答案 0 :(得分:2)
从您的node.js应用程序执行shell脚本$ KAFKA_HOME / bin / kafka-topics.sh -create -topic topicname -partitions 8 -replication-factor 1 -zookeeper localhost:2181
其中$ KAFKA_HOME是您安装Kafka的位置
答案 1 :(得分:1)
正如文档所述,此方法仅在auto.create.topics.enable
设置为true
时才有效:
此方法用于在Kafka服务器上创建主题。它仅在Kafka服务器上的auto.create.topics.enable设置为true时有效。我们的客户只需向服务器发送元数据请求即可自动创建主题。当async设置为false时,此方法在创建所有主题之前不会返回,否则会立即返回。
这意味着对未知主题的任何操作都将导致使用num.partitions
参数配置的默认分区数创建。
我不确定,但也许其中一个node-rdkafka
实现可以让您调用相应的librdkafka
方法来创建主题?
答案 2 :(得分:0)
我不确定,但是我认为根据您的要求,代码已在此处更新:-https://github.com/SOHU-Co/kafka-node#createtopicstopics-cb,并添加了参数“ replicaAssignment”。
// Optional explicit partition / replica assignment
// When this property exists, partitions and replicationFactor properties are ignored
replicaAssignment: [
{
partition: 0,
replicas: [3, 4]
},
{
partition: 1,
replicas: [2, 1]
}
]
答案 3 :(得分:-1)
Producer.createTopics
具有一个partitons
选项。参见https://www.npmjs.com/package/kafka-node#createtopicstopics-cb
传递对象,而不是字符串
producer.createTopics(['t', 't1'], true, function (err, data) {});
成为
producer.createTopics(
[
{ topic: 't', paritions: 5 },
{ topic: 't1', partitions: 23 },
],
true,
function (err, data) {}
);