2015-08-21 2 views
1

Я разработал потребитель на основе Java на основе Java, где у меня есть 100 потоков для каждого экземпляра потребителя, и когда начинается процесс потребления, каждый поток получает раздел (поскольку существует 100 разделов), а потребление готово.Kafka 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 потребителей, но добавление каждого потребителя - операция перебалансировки, которая является дорогостоящей.

Я хотел бы знать, является ли это правильным подходом? Есть ли способ запустить 100-поточного потребителя, используя kafka-node?

ответ

0

Я думаю, вы можете использовать супервизор для запуска кода узла js. В конфигурации супервизора вы можете указать количество экземпляров (100 в вашем случае), которые нужно запустить.

путь конфигурации: /etc/supervisor/conf.d/

Смежные вопросы