如何使用任何Node JS模块将具有SSL设置的Kafka使用者连接起来

时间:2019-05-21 07:24:01

标签: node.js ssl kafka-consumer-api

我想连接供应商提供的外部kafka主题;因为我们已经在Node JS之上开发了服务。

所以我正在寻找

  

NodeJS kafka使用者并具有SSL设置;

因为kafka服务器在握手时需要详细信息;

这是我已经在kafkajs模块中尝试过的内容

var fs = require('fs');
var Kafka = require('kafkajs').Kafka;
var logLevel = require('kafkajs').logLevel;


var _kafka = new Kafka({
    clientId: 'my-app',
    brokers: ['broker:9093'],
    logLevel: logLevel.DEBUG,
    ssl: {
        rejectUnauthorized: false,
        ca: [fs.readFileSync('./cert/ca.trust.certificate.pem', 'utf-8')],
        cert: fs.readFileSync('./cert/client-cert-signed.pem', 'utf-8'),
    }
});


try {
    const consumer = _kafka.consumer({ groupId: 'test-group' }, { maxWaitTimeInMs: 3000 });

    consumer.connect();
    consumer.subscribe({ topic: 'external-topic', fromBeginning: true });

    consumer.run({
        eachMessage: async({ topic, partition, message }) => {
            console.log({
                partition: 2,
                offset: message.offset,
                value: message.value.toString(),
            })
        },
    })
} catch (err) {
    console.log('Error while connect : ' + err);
}

正在给予

  

连接错误:101057795:错误:1408E0F4:SSL例程:ssl3_get_message:意外消息:openssl \ ssl \ s3_both.c:408:\    在连接时;

请帮助我解决问题或为我提供任何npm模块,以便欢迎您尝试使用示例。

1 个答案:

答案 0 :(得分:0)

忘记在key选项中添加ssl属性;因为这是握手时的必需条件;