2015-08-21 38 views
1

我已经开发了一个基于Java卡夫卡消费者在那里我有100个线程为每个消费者实例和消费过程开始时,每个线程都有一个分区(因为有100个分区)和消费已经完成了。卡夫卡的NodeJS单线程模型 - 将消费者

我打算转和的NodeJS使用卡夫卡节点作为客户端库,我如下所述消耗话题:

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线程用户?

回答

0

我想你可以使用supervisor来运行你的节点js代码。在主管配置中,你可以指定任何你需要运行的实例(在你的情况下为100)。

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