作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我是一名优秀的程序员,十分优秀!