簡體   English   中英

如何在Nodejs中檢查Kafka主題的存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM