我已经开发了一个基于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线程消费者?
答案 0 :(得分:0)
我认为你可以使用supervisor来运行你的节点js代码。在管理程序配置中,您可以指定不需要运行的实例(在您的情况下为100)。
配置路径为:/etc/supervisor/conf.d/