POO*_*PTA 5 node.js apache-kafka
我目前正在使用 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":{}}]
Run Code Online (Sandbox Code Playgroud)
看到LeaderNotAvailable错误了吗?这意味着该主题不存在。但是 - 假设auto.topic.create.enable设置为true,那么对 的调用loadMetadataForTopics也将创建主题。因此,您可以在一次调用中获得这两个信息 - 如果您获得error,则该主题不存在并且已创建,如果您没有收到错误,您将获得实际的主题元数据。
| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |