Javascript 如何使用kafka节点从主题中读取数据?

Javascript 如何使用kafka节点从主题中读取数据?,javascript,node.js,apache-kafka,producer-consumer,Javascript,Node.js,Apache Kafka,Producer Consumer,我有一个主题,我必须从kafka服务器读取,所以我只需要创建一个消费者,可以从kafka主题读取数据,我总是得到错误主题不存在 1-如何确保卡夫卡连接已建立 2-如何从卡夫卡的特定主题中获取数据 main.js var kafka = require('kafka-node'); var config = require('./config.js'); var kafkaConn = config.kafkaCon.dit; var HighLevelConsumer = kafka.HighL

我有一个主题,我必须从kafka服务器读取,所以我只需要创建一个消费者,可以从kafka主题读取数据,我总是得到错误主题不存在

1-如何确保卡夫卡连接已建立

2-如何从卡夫卡的特定主题中获取数据

main.js

var kafka = require('kafka-node');
var config = require('./config.js');
var kafkaConn = config.kafkaCon.dit;
var HighLevelConsumer = kafka.HighLevelConsumer;
//var HighLevelProducer = kafka.HighLevelProducer;
var Client = kafka.Client;
var Offset = kafka.Offset;
var topics = [{topic: 'UEQ'}];
var client = new Client(kafkaConn);
var payloads = [ { topic: topics, partition : 0}];
var options = {
    groupId: 'kafka-node-group',
// Auto commit config
    autoCommit: true,
    autoCommitMsgCount: 100,
    autoCommitIntervalMs: 5000,
// Fetch message config
    fetchMaxWaitMs: 100,
    fetchMinBytes: 1,
    fetchMaxBytes: 1024 * 10,
};
var consumer = new HighLevelConsumer(client, payloads, options);

consumer.on('message', function (message) {
    console.log('TEST',this.id, message);
});
错误


我正在做一个类似的项目,在这个项目中,我在自己的服务器上有一个Kafka制作者,并且使用Kafka节点作为我的应用程序的使用者。我对卡夫卡节点相当陌生,没有太多的经验,但我可以尝试分享一些我发现的见解

我相信你的问题是你的主题根本不存在

1.如何确保卡夫卡连接已建立? 如果你的关系还没有建立起来,我不认为它会继续说这个话题不存在。当我键入一个不存在的主题,然后为我的卡夫卡制作人键入一个随机ip时,不会出错。但是当我指向正确的ip,并且仍然有不正确的主题时,我得到了与您看到的相同的错误

2.此代码适用于我的应用程序
var kafka=require('kafka-node');
var Consumer=kafka.Consumer,
//客户端指定卡夫卡制作者的ip并使用
//动物园管理员端口2181
client=new kafka.client(“:2181”),
//使用者对象指定其订阅的客户端和主题
消费者=新消费者(
客户端,[{topic:'myTopic',分区:0}],{autoCommit:false});
consumer.on('message',函数(message){
//从卡夫卡信息中获取主要内容
var data=JSON.parse(message.value);
控制台日志(数据);
});

希望您不会觉得太晚。

如果您出于调试/开发目的需要它,那么只需添加以下导入(以下代码为ES6格式),并且它应该是console。在建立连接或出现任何故障消息时注销一条消息:

this.kafkaLogging = require('kafka-node/logging');
this.kafkaLogging.setLoggerProvider(this.getLoggerProvider);

...

getLoggerProvider() {
    return {
        debug: console.log.bind(console),
        info : console.log.bind(console),
        warn : console.log.bind(console),
        error: console.log.bind(console)
    };
}

谢谢,这让我明白了!
var kafka = require('kafka-node');
var Consumer = kafka.Consumer,
    // The client specifies the ip of the Kafka producer and uses
    // the zookeeper port 2181
    client = new kafka.Client("<ip to producer>:2181"),
    // The consumer object specifies the client and topic(s) it subscribes to
    consumer = new Consumer(
        client, [ { topic: 'myTopic', partition: 0 } ], { autoCommit: false });

consumer.on('message', function (message) {
    // grab the main content from the Kafka message
    var data = JSON.parse(message.value);
    console.log(data);
});
this.kafkaLogging = require('kafka-node/logging');
this.kafkaLogging.setLoggerProvider(this.getLoggerProvider);

...

getLoggerProvider() {
    return {
        debug: console.log.bind(console),
        info : console.log.bind(console),
        warn : console.log.bind(console),
        error: console.log.bind(console)
    };
}