Kafka nodejs单线程模型 - 添加消费者

时间:2015-08-21 19:58:04

标签: node.js apache-kafka consumer

我已经开发了一个基于Java的Kafka使用者,每个消费者实例都有100个线程,当消费过程开始时,每个线程都会获得一个分区(因为有100个分区)并且消耗已经完成。

我打算切换到nodejs并使用kafka-node作为客户端库,我正在使用如下所述的主题:

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-node触发100线程消费者?

1 个答案:

答案 0 :(得分:0)

我认为你可以使用supervisor来运行你的节点js代码。在管理程序配置中,您可以指定不需要运行的实例(在您的情况下为100)。

配置路径为:/etc/supervisor/conf.d/