gpt4 book ai didi

node.js - 在 kafka 主题中创建多个分区并使用 kafka-node 向所有分区发布消息

转载 作者:行者123 更新时间:2023-12-04 09:03:30 26 4
gpt4 key购买 nike

我是 kafka 的新手,并使用 kafka-node 在 nodeJS 中实现它。我想在一个主题中创建 3 个分区并同时向所有主题发布消息。我尝试了以下代码,但这里只创建了一个分区,所有消息都将发送到该分区。谁能告诉我我哪里出错了。非常感谢。

Abc.abcData = async() => {
try
{
var client = new kafka.KafkaClient();
var topic = 'newTopic';
var topicsToCreate = [
{
topic: topic,
partitions: 3,
replicationFactor: 2,
replicaAssignment: [
{
partition: 0,
replicas: [0]
},
{
partition: 1,
replicas: [1]
},
{
partition: 2,
replicas: [2]
}
]
},
]
client.createTopics(topicsToCreate, (error, result) => {
console.log(result);
});
var HighLevelProducer = kafka.HighLevelProducer;
var producer = new HighLevelProducer(client);
var payloads = [
{ topic: topic, messages: 'this is partition 1!!', partitions: 0},
{ topic: topic, messages: 'this is partition 2!!', partitions: 1},
{ topic: topic, messages: 'this is partition 3!!', partitions: 2}
];
producer.on('ready', function () {
producer.send(payloads, function (err, result) {
if (err)
console.log(err);
console.log(result);

});
});

}
catch (err)
{
console.error(err.message);
}
};
我收到如下回复 -
[ { topic: 'newTopic', error: "Topic 'newTopic' already exists." } ]
{"newTopic":{"0":6}}

最佳答案

您在这里使用了 createTopics() 在 kafka 服务器上,它仅在 时有效auto.create.topics.enable ,在 Kafka 服务器上,设置为 true。客户端只需向服务器发送元数据请求,服务器将自动创建主题。当 async 设置为 false 时,此方法直到所有主题创建完毕后才返回,否则立即返回。
因此,这里默认创建一个分区的主题。要创建多个分区或使其自定义,您必须在 中添加以下行server.property 文件 -

auto.create.topics.enable=false

关于node.js - 在 kafka 主题中创建多个分区并使用 kafka-node 向所有分区发布消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63510862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com