无限循环卡夫卡消费者

时间:2018-07-31 12:54:31

标签: node.js apache-kafka apache-zookeeper

我正在测试一些基本的Kafka功能,我在Ubuntu Server 18.04 LTS虚拟机上运行着基础zookeeper/kafka服务器。我使用kafka-node模块。

此脚本应在等待新消息到达以便使用它。 但是,一旦启动它,它就会陷入无限循环。

我找不到它的来源

"use strict"
require('dotenv').config();
var kafka = require('kafka-node');

const client = new kafka.Client("localhost:2181");
var topics = [{
  topic: 'stuff',
  offset: 0
}];
var options = {
  autoCommit: false
}
const HLConsumer = new kafka.HighLevelConsumer(client, topics, options);

HLConsumer.on('message', function(message) {
  console.log(message);
});

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

HLConsumer.on('offsetOutOfRange', function(err) {
  console.log('offsetOutOfRange:', err);
})

每个人都度过美好的一天,谢谢

编辑1:

我已根据要求将autoCommit更新为true,但仍然有问题。 这是问题的廉价图片,实际上它循环遍历每个偏移量,然后读取偏移量为0的10/15消息,然后在主题的每个偏移量上重新启动循环 gif loop

2 个答案:

答案 0 :(得分:0)

我以前遇到过这个问题,解决方法是更新kafka-node。

答案 1 :(得分:-2)

我发现是什么原因造成的: 我曾经这样宣称我的消费者

var kafka = require('kafka-node');
...
var consumer = new kafka.Consumer(client, topics, options);

但是要做到这一点的好方法是:

var kafkaConsumer = require('kafka-node').Consumer;
...
var consumer = new kafkaConsumer(client, topics, options);