我希望在我的使用者群组中完成所有任务(如将消息推入数据库)后手动提交消息。如何手动禁用自动提交和提交消息。
答案 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)
答案 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);
}
});
});