kafka nodejs单线程模型-添加使用者

jk9hmnmh  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(372)

我开发了一个基于java的kafka消费程序,其中每个消费程序示例有100个线程,当消费过程开始时,每个线程得到一个分区(因为有100个分区),消费就完成了。
我计划切换到nodejs并使用kafka节点作为客户端库,我正在使用下面描述的主题:

var kafka = require('kafka-node');
var HighLevelConsumer = kafka.HighLevelConsumer;
var Client = kafka.Client;
var client = new Client('xx.xx.xx.xxx:6080');
var topics = [ { topic: "test_1" }];

var options = {
    groupId: 'group1',
    autoCommit: true,
    autoCommitMsgCount: 100,
    autoCommitIntervalMs: 5000,
    fetchMaxWaitMs: 100,
    fetchMinBytes: 1,
    fetchMaxBytes: 1024 * 10,
    fromOffset: false,
    fromBeginning: false
};

var consumer = new HighLevelConsumer(client, topics, options);

consumer.on('message', function (message) {
        console.log(message);
    });

    consumer.on('error', function (err) {
        console.log('error', err);
    });
}

但问题是这只是一个消费者。但是如果我添加多个nodejs进程,我可以完成100个消费者,但是添加每个消费者是一个重新平衡的操作,成本很高。
我想知道这是不是正确的方法?有没有办法使用kafka节点触发100线程的使用者?

inb24sb2

inb24sb21#

我认为您可以使用supervisor来运行节点js代码。在supervisor配置中,您可以指定需要运行的示例数(在您的情况下为100个)。
配置路径为: /etc/supervisor/conf.d/

相关问题