gpt4 book ai didi

node.js - 如何在Nodejs中检查Kafka主题是否存在

转载 作者:搜寻专家 更新时间:2023-10-31 23:20:31 25 4
gpt4 key购买 nike

我目前正在使用 Nodejs 和 Kafka,其中设置了一个 Nodejs 服务器来接收事件,并将与事件对应的数据发送到 Kafka。在 Kafka 中,如果主题不存在,生产者将相应地动态创建一个主题。为此,我想在创建之前检查主题是否存在。

我目前正在使用 kafka-node 模块来实现 kafka-node 集成功能。但是,我找不到任何功能来说明主题的存在或返回 kafka 中当前存在的所有主题的列表。

在 Internet 上搜索时,我发现了 kafka-rest 代理,它通过获取当前主题确实有助于了解这一点,但我不明白如何充分利用它。

是否有任何其他 API 可以实现上述功能?

最佳答案

实际上,您可以同时进行这两项操作。只需使用未记录的 Client.loadMetadataForTopics() 函数。像这样:

var kafka = require('kafka-node');
var client = new kafka.Client("localhost:2181");

client.loadMetadataForTopics(["NonExistentTopic"], (err, resp) => {
console.log(JSON.stringify(resp))
});

// [{"0":{"nodeId":0,"host":"host-001","port":9092}},{"error":["LeaderNotAvailable"],"metadata":{}}]

看到 LeaderNotAvailable 错误了吗?这意味着该主题不存在。但是——假设 auto.topic.create.enable 设置为 true,那么对 loadMetadataForTopics 的调用也将创建主题。因此,您可以在一次调用中同时获得两者——如果您获得错误,则该主题不存在并且已创建,如果您没有获得错误,您将获得实际的主题元数据。

关于node.js - 如何在Nodejs中检查Kafka主题是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37967901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com