【发布时间】:2019-09-26 16:31:46
【问题描述】:
我正在尝试使用 nodejs 创建具有 SASL 身份验证的 Kafka 生产者和消费者,但它似乎不适用于我尝试过几乎所有的 nodejs kafka 包(node-rdkafka、kafka-node、no-卡夫卡....)
使用 node-rdkafka 尝试了以下选项,但在使用 sasl 发布消息时没有运气
var Kafka = require('node-rdkafka');
var producer = Kafka.Producer({
'debug': 'all',
'metadata.broker.list': 'localhost:9092',
'security.protocol': 'sasl_plaintext',
'sasl.username': 'root',
'sasl.password': 'admin!',
'sasl.mechanisms': 'PLAIN',
});
// producer.connect();
producer.connect(null, (err, metadata) => {
console.log(metadata);
console.error(err);
console.log('Connected')
});
producer.on('ready', function () {
try {
producer.produce('topic1', null, new Buffer('Awesome'), null, Date.now())
} catch (err) {
console.log('A error occured')
}
});
// Any errors we encounter, including connection errors
producer.on('event.error', function(err) {
console.log('Error from producer');
console.log(err);
})
producer
.on('event.log', function(event) {
console.log(event)
const loggedEvent = {
severity: event.severity,
fac: event.fac
};
if (event.severity >= 7) {
console.log(loggedEvent, event.message);
} else if (event.severity === 6 || event.severity === 5) {
console.log(loggedEvent, event.message);
} else if (event.severity === 4) {
console.log(loggedEvent, event.message);
} else if (event.severity > 0) {
console.log(loggedEvent, event.message);
} else {
console.log(loggedEvent, event.message);
}
})
除此之外,由于 node-rdkafka 的 C++ 包装器导致 node-gyp 和 docker 问题面临问题
https://github.com/nodejs/node/issues/17732
https://github.com/GaiamTV/kafka-node-topic-consumer/issues/3
https://github.com/Blizzard/node-rdkafka/issues/323
甚至创建了带有生产者和消费者独立 java 类的 jar 文件,并尝试使用没有抛出任何错误且同时没有输出的 nodejs 子进程运行这些 java 类
var cmd = require('child_process').spawn('java', ['-cp', 'NodeKafka-0.0.1-SNAPSHOT.jar', 'node/kafka/NodeKafka/nodeKafkaConsumer.class']);
//console.log(spawn);
setInterval(function() {
cmd.stdout.on('data', function (data) {
console.log('stdout: ' + data); // This will print string returned by Main class.
});
},3000);
与 Java 和 python 相比,Kafka nodejs 存在大量依赖项和错误
您能否帮助使用 node-rdkafka 或任何其他支持 SASL 身份验证(不使用 SSL)的 pacakge 来创建 kafka 生产者和消费者
【问题讨论】:
标签: node.js apache-kafka