Javascript Kafka节点高级生产者仅写入偶数个分区
我正在使用Kafka节点库,并测试高级生产者 我创建了一个包含10个分区的主题“HLPTestInput”,并编写了一个函数,每秒生成一次 生产者写入分区0、2、4、6和8,但不写入奇数分区 奇怪的是,当我从这个主题消费并生成第二个主题“HLPTestInputFromConsumer”时,消息被写入到所有主题中,该主题有5个分区 是否有我缺少的配置Javascript Kafka节点高级生产者仅写入偶数个分区,javascript,apache-kafka,node-kafka,Javascript,Apache Kafka,Node Kafka,我正在使用Kafka节点库,并测试高级生产者 我创建了一个包含10个分区的主题“HLPTestInput”,并编写了一个函数,每秒生成一次 生产者写入分区0、2、4、6和8,但不写入奇数分区 奇怪的是,当我从这个主题消费并生成第二个主题“HLPTestInputFromConsumer”时,消息被写入到所有主题中,该主题有5个分区 是否有我缺少的配置 const kafka = require('kafka-node'), HighLevelProducer = kafka.HighLe
const kafka = require('kafka-node'),
HighLevelProducer = kafka.HighLevelProducer,
ConsumerGroup = kafka.ConsumerGroup,
client = new kafka.KafkaClient({kafkaHost: 'smc-dev.silverbolt.lab:9092'}),
producer = new HighLevelProducer(client),
consumer = new ConsumerGroup(
{
kafkaHost: 'smc-dev.silverbolt.lab:9092',
groupId: 'testGroup'
},
'HLPTestInput'
);
let index = 0;
setInterval(() => {
producer.send([{
topic: 'HLPTestInput',
messages: [index]
}], (err, data) => {
console.log('produced', data);
});
index++;
}, 1000);
consumer.on('message', (message) => {
console.log('consumed', message);
producer.send([{
topic: 'HLPTestInputFromConsumer',
messages: [message]
}], (err, data) => {
console.log('produced to secondary', data);
});
});
我不太确定,但可能是因为你用同一个制作人写了两个不同的主题。正如HighLevelProducer使用循环编写一样。因此,假设您的制作人在“HLPTestInput”主题中写入,然后您将时间间隔设置为1000,因此在此期间,您的消费者收到消息,现在您的制作人在“HLPTestInputFromConsumer”主题中写入 所以您的制作人在其分区0,2,4中编写“HLPTestInput”主题 以及第1、3、5部分中的“HLPTestInputFromConsumer”主题 所以我建议试着创建另一个制作人。那么它应该可以正常工作 请尝试以下代码:
const kafka = require('kafka-node'),
HighLevelProducer = kafka.HighLevelProducer,
ConsumerGroup = kafka.ConsumerGroup,
client = new kafka.KafkaClient({kafkaHost: 'smc-dev.silverbolt.lab:9092'}),
client1 = new kafka.KafkaClient({kafkaHost: 'smc-dev.silverbolt.lab:9092'}),
producer = new HighLevelProducer(client),
producer1 = new HighLevelProducer(client1),
consumer = new ConsumerGroup(
{
kafkaHost: 'smc-dev.silverbolt.lab:9092',
groupId: 'testGroup'
},
'HLPTestInput'
);
let index = 0;
setInterval(() => {
producer.send([{
topic: 'HLPTestInput',
messages: [index]
}], (err, data) => {
console.log('produced', data);
});
index++;
}, 1000);
consumer.on('message', (message) => {
console.log('consumed', message);
producer1.send([{
topic: 'HLPTestInputFromConsumer',
messages: [message]
}], (err, data) => {
console.log('produced to secondary', data);
});
});