我正在使用express和kafka-node构建一个简单的node.js API,当收到HTTP请求并返回连接时,该API从请求的Kafka主题和使用者组返回未读消息。我不需要或希望消费者继续等待新消息。
在kafka-node中,检查主题末尾是否正确的方法是什么?如果是,请关闭与代理的连接并退出应用程序,以防止读取新消息?
这是我的consumer.js。与kafka-node文档中给出的示例几乎相同。
"use strict";
const kafka = require("kafka-node");
let topicName = "testTopic-01",
groupName = "testGroup-01",
consumerOptions = {
kafkaHost: "localhost: 9092",
groupId: groupName,
sessionTimeout: 15000,
protocol: ["roundrobin"],
fromOffset: "earliest",
encoding: "utf8"
};
const consumerGroup = new kafka.ConsumerGroup(consumerOptions, topicName);
consumerGroup.on("message", message => {
console.log(`Message: ${message.value}`);
});
consumerGroup.on("error", error => {
console.error(error);
});
console.log(`Consumer started on topic ${topicName} on group ${groupName}`);
答案 0 :(得分:0)
您可以使用#Offset来获取主题分区的当前偏移量。通过比较分配的主题分区的偏移量,您可以知道相应主题分区中的最后一条消息是什么。
请记住,如果并行有多个使用者,则应跟踪使用者组中的使用者分配给(#fetchCommits)的使用者的主题分区。