2017-02-02 6 views
0

Имейте базовый пример, который работает как шарм для 1 потребителя. Он получает сообщения. Но добавление одного дополнительного потребителя будет проигнорировано.kafka-node несколько потребителей

let kafka = require('kafka-node'); 
let client = new kafka.Client(); 

let producer = new kafka.Producer(client); 

let consumer1 = new kafka.Consumer(client,[ {topic: 'topic1', partition: 0}]); 
let consumer2 = new kafka.Consumer(client,[ {topic: 'topic2', partition: 0}]); 


producer.on('ready', function() { 

    producer.send([{topic:'topic1', messages: 'topic 1 msg' ], (err,data)=>{ 
     console.log(err,'1 sent'); 
    }); 
    producer.send([{topic:'topic2', messages: 'topic 1 msg'}], (err,data)=>{ 
     console.log(err, '2 sent'); 
    }); 

}); 
producer.on('error', function (err) { 
    console.log('err', err); 
}) 



consumer1.on('message',(message) =>{ 
    console.log(11, message); 
}); 
consumer2.on('message',(message) =>{ 
    console.log(22, message); 
}) 

Вопрос о том, что событие с «22» для потребителя2 никогда не срабатывает. Данные по этой теме существуют, если я проверю ее с помощью средств командной строки

ответ

3

Вы забыли добавить группу потребителей в параметр потребителя. В вашем случае оба потребителя принадлежат к одной группе потребителей (которая по умолчанию называется kafka-node-group). Наличие одной группы потребителей означает, что каждое сообщение будет отправлено один раз на группу потребителей. И так как ваша тема имеет 0 разделов, только первый потребитель обработает сообщение.

Если вы хотите отправить одно и то же сообщение обоим потребителям, у вас должно быть две группы потребителей (по одному потребителю на группу). Вы можете сделать это следующее way:

let consumer1 = new kafka.Consumer(client,[ {topic: 'topic1', partition: 0}], {groupId: 'group1'}); 
let consumer2 = new kafka.Consumer(client,[ {topic: 'topic2', partition: 0}], {groupId: 'group2'}); 

Если вы хотите, чтобы ваши сообщения потребителей процесса вместе (перегородки), необходимо увеличить количество разделов в вашей теме.

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

  • Нет связанных вопросов^_^