在nodejs中检查kafka主题的存在

我目前正在使用nodejs和kafka,由此设置一个nodejs服务器来接收事件,并将与事件相对应的数据发送给kafka。 在kafka中,如果主题不存在,制作人将相应地dynamic地创build主题。 要做到这一点,我想检查该主题的存在,如果它存在或不创build之前。

我目前正在使用kafka-node模块来实现kafka-node集成function。 然而,我找不到任何能够说明这个话题存在的function,或者返回卡夫卡当前存在的所有话题列表。

在互联网上search,我发现卡夫卡rest代理,通过获取当前的主题,有助于了解这一点,但我不知道如何把它用于很多。

任何人都可以告诉我关于任何其他通过我可以实现上述function的API? 请帮忙。

实际上,你可以同时做两个。 只需使用未logging的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的调用也将创build主题。 因此,您可以在一个调用中得到两个 – 如果您得到error ,那么该主题不存在并且被创build,如果您没有得到错误,您将获得实际的主题元数据。