2015-08-21 20 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/