繁体   English   中英

从Kafka主题阅读消息然后关闭的正确方法

[英]Proper way of reading messages from Kafka topic and then closing

我正在使用express和kafka-node构建一个简单的node.js API,它在收到HTTP请求时返回来自请求的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}`);

您可以使用#Offset获取主题分区的当前偏移量。 通过比较分配的主题分区的如此获取的偏移量,您就可以知道相应主题分区中的最后一条消息是什么。

请记住,如果您并行拥有多个使用者,则应跟踪消费者组内消费者所分配的主题分区( #fetchCommits )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM