gpt4 book ai didi

java - 如何在Java中获取某个主题所属的代理

转载 作者:行者123 更新时间:2023-11-30 05:37:59 25 4
gpt4 key购买 nike

我有一个 kafka 经纪人集群。我正在尝试获取主题级别的指标,对于驻留在代码指向的特定代理上的主题,我已经成功完成了这一操作。 Zookeeper 返回所有代理上的所有主题的列表。当我尝试获取每个主题的指标时,这会导致失败。

我正在使用此函数从 Zookeeper 获取主题列表:

ZooKeeper zk = new ZooKeeper("kafka.ip:port", 1000, null);
return zk.getChildren("/brokers/topics", false);

为了获取主题指标,我正在使用 JMX。 JMX 连接器仅指向单个代理。当我用来获取指标的代码遇到不在该代理上的主题时,它会失败,因为该主题在代理的眼中不存在。

这引出了我的问题:有没有办法获得主题所在的经纪人?有没有更好的方法来做到这一点?

谢谢!

最佳答案

要获取主题分区离开的代理,您可以使用 AdminClient 接口(interface)。类似的东西

AdminClient kafkaClient = new AdminClient(properties)) 
DescribeTopicsResult result = kafkaClient.describeTopics(Collections.singleton(topicName));
Map<String, TopicDescription> descriptions = result.all().get();
descriptions.values().stream().forEach(t->{
t.partitions().stream().forEach(p->{
Node leader = p.leader(); //here is a leader for partition
List<Node> replicas = p.replicas(); //here are the replicas
});
});

尽管我不确定这对于您的情况来说是一个好主意。

关于java - 如何在Java中获取某个主题所属的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56242555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com