[英]How to check the existence of Kafka topic in Nodejs
我目前正在使用 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
的调用也将创建主题。 因此,您可以在一次调用中获得两者——如果您收到error
,则该主题不存在并已创建,如果您没有收到错误,您将获得实际的主题元数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.