2016-06-22 2 views
2

В настоящее время я работаю с nodejs и kafka, посредством чего сервер nodejs настроен для приема событий, а данные, соответствующие событиям, отправляются в kafka. В kafka производитель будет создавать тему соответственно и динамически, если тема уже не существует. Для этого я хочу проверить существование темы, если она существует или нет до создания., чтобы проверить существование темы kafka в nodejs

В настоящее время я использую модуль kafka-node для интегрированных функций kafka-node. Однако я не мог найти никакой функциональности, которая либо говорит о существовании темы, либо возвращает список всех тем, существующих в настоящее время в kafka.

При поиске в Интернете я нашел прокси-сервер kafka-rest, который помогает узнать об этом, извлекая текущие темы, но я не понял, как это использовать.

может ли кто-нибудь рассказать мне о любом другом api, через который я могу достичь указанной функции выше? Пожалуйста помоги.

ответ

2

Вы можете сделать оба в то же время, на самом деле. Просто используйте недокументированную функцию 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, тогда тема не существовала и была создана, если вы не получите ошибку, вы получите фактические метаданные темы.

+0

спасибо. Это похоже на то, что я искал :) –

Смежные вопросы