簡體   English   中英

Node.js:如何使用kafka-node從主題開始獲取消息?

[英]Node.js: How to use kafka-node for fetching messages from beginning from a topic?

我按照本教程在Ubuntu 14.04服務器上安裝Kafka。 為生產者和消費者提供的示例工作正常。

這是生產者命令:

echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

這是消費者命令:

~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

但是,我正在嘗試在Node.js中編寫類似的使用者,並且在創建使用者之前它不會顯示主題中存在的消息。 這是我的代碼。 完成我正在嘗試的內容需要什么附加配置?

var kafka = require('kafka-node')
var Consumer = kafka.Consumer
var client = new kafka.Client("localhost:2181/")
var consumer = new Consumer(
    client,
    [
      { topic: 'TutorialTopic', partition: 0, offset: 0}
    ],
    {
      fromOffset: true
    }
  );


consumer.on('message', function (message) {
  console.log("received message", message);
});

以上對我使用節點v6.11.0和kafka-node 1.6.2不起作用

以下代碼做了:

var kafka = require('kafka-node'),
    Consumer = kafka.Consumer,
    client = new kafka.Client("localhost:2181/"),
    consumer = new Consumer(
         client,
        [
              { topic: 'TutorialTopic', partition: 0, offset: 0 }
        ],
        { fromOffset: true }         
    );

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

 consumer.on('error', function (err) 
{
    console.log('ERROR: ' + err.toString());
});

我認為發生的事情是在調用consumer.on(...)之前,你的kafka-node已經從主題中讀過。 相反,試試這個:

var consumer = new Consumer(
  client,
  [],
  {fromOffset: true}
);

consumer.on('message', function (message) {
  console.log("received message", message);
});

consumer.addTopics([
  { topic: 'TutorialTopic', partition: 0, offset: 0}
], () => console.log("topic added"));
Add fromOffset to earliest in consumer config  

var consumer = new Consumer(
client,
[
  { topic: 'TutorialTopic', partition: 0, offset: 0}
],
{
  fromOffset: 'earliest',
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM