我正在尝试使用nodejs创建带有sasl身份验证的kafka生产者和消费者,但是在nodejs kafka包中似乎不可用,我已经尝试了几乎所有的nodejs kafka包(node rdkafka,kafka node,no kafka….)
使用节点rdkafka尝试了下面的选项,但没有成功地使用sasl发布msg
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);
}
})
除此之外,由于节点rdkafka的c++ Package 器,还面临着节点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有很多依赖项和错误
您能帮助使用节点rdkafka或任何其他支持sasl身份验证(不使用ssl)的包来创建kafka生产者和消费者吗
2条答案
按热度按时间p8h8hvxi1#
如果你想用nodejs和kafka和sasl,你没有很多选择。据我所知,只有Kafka正式支持。也就是说,我已经使用它超过一年了(与sasl),它是一个相当好的客户。
我不知道您的配置或用例,但请注意,当通过明文连接使用sasl plain时,凭据将以明文形式通过网络发送。
安装节点rdkafka时,需要确保它成功构建并启用了所有必需的功能(sasl)。根据您的操作系统,您需要安装的确切依赖项略有不同。
查看您在节点rdkafka问题中粘贴的日志,您缺少所有依赖项,包括一个c编译器!上列出了所需的库https://github.com/edenhill/librdkafka#requirements
关于sasl依赖项,在npm输出中,您希望看到:
最后,您的nodejs客户机逻辑看起来很好,所以一旦您对依赖项进行了排序,它就应该可以工作了。
sbdsn5lh2#
对于Kafka和他们的节点是一个很好的包裹https://kafka.js.org/
他们有
SASL
https://kafka.js.org/docs/configuration#a-姓名-sasl-a-sasl