使用kafka-node与使用者组手动提交消息

时间:2017-05-09 06:19:46

标签: node.js apache-kafka kafka-consumer-api

我希望在我的使用者群组中完成所有任务(如将消息推入数据库)后手动提交消息。如何手动禁用自动提交和提交消息。

3 个答案:

答案 0 :(得分:1)

请改用node-rdkafka。它工作得很好。你可以提交像

这样的消息
consumer.commit({ topic: data.topic, partition: data.partition, offset: data.offset + 1 }, function(err, data) {})

答案 1 :(得分:0)

set auto commit enable为false。

auto.commit.enable=false
consumer.commitOffsets(true)

https://stackoverflow.com/a/29952127/4652706

答案 2 :(得分:0)

将autoCommit设置为false

const kafka = require('kafka-node');

const config = require('../config');

const client = new kafka.KafkaClient({
  kafkaHost: config.kafkaHost
});

const consumer = new kafka.Consumer(client, [
  {
    topic: config.kafkaTopic
  }
], {
  autoCommit: false
});

然后手动提交-

consumer.on('message', (message) => {
  console.log('message', message);
  // feed data into db 
  consumer.commit((error, data) => {
    if (error) {
      console.error(error);
    } else {
      console.log('Commit success: ', data);
    }
  });
});