问题描述
我只有一个kafka代理,并且正在使用kafka-node在nodeJS中实现kafka。我想创建一个包含3个分区的主题。在执行此操作时,出现的问题是只有第一个分区正在获得领导者分配,而其他两个分区却没有获得领导者。我想将领导者分配给所有分区。谁能告诉我我该怎么做? 预先感谢。
var client = new kafka.KafkaClient();
var topic = 't-26';
var topicsToCreate = [
{
topic: topic,partitions: 3,leader: 0,replicationFactor: 1,replicaAssignment: [
{
partition: 0,replicas: [0]
},{
partition: 1,replicas: [1]
},{
partition: 2,replicas: [2]
}
]
},];
client.createtopics(topicsToCreate,(error,result) => {
console.log(result);
});
主题创建如下-
Topic: t-26 PartitionCount: 3 ReplicationFactor: 1 Configs:
Topic: t-26 Partition: 0 leader: 0 Replicas: 0 Isr: 0
Topic: t-26 Partition: 1 leader: none Replicas: 1 Isr:
Topic: t-26 Partition: 2 leader: none Replicas: 2 Isr:
解决方法
您正在“全局”将Leader定义为ID为0
的代理,而您希望分区1
和2
位于其他代理。当您将复制定义为一个时,这本身就矛盾了。删除有关Leader
的部分,它将自动在所需的代理上创建分区领导。
由于@mike,我得到了提示并解决了该问题。我做了以下-
删除leader=0
并将所有副本设置为0 replicas: [0]