我开发了一个基于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线程的使用者?
1条答案
按热度按时间inb24sb21#
我认为您可以使用supervisor来运行节点js代码。在supervisor配置中,您可以指定需要运行的示例数(在您的情况下为100个)。
配置路径为:
/etc/supervisor/conf.d/