所以我创建了一个从Kafka主题获取指标的函数
public <T extends KafkaTemplate> Double getMetricValue(String key, T kafkaTemplate) {
for (final Object set : kafkaTemplate.metrics().entrySet()) {
Map.Entry map = (Map.Entry) set;
MetricName metricName = (MetricName) map.getKey();
KafkaMetric kafkaMetric = (KafkaMetric) map.getValue();
if (metricName.name().equals(key)) {
return kafkaMetric.value();
}
}
return 0.0;
}
它将用于例如:Utils.getMetricValue("buffer-available-bytes", kafkaTemplate);
问题是,现在根据文档:https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/common/Metric.html value方法已弃用!它正在返回Double。
现在我们需要使用metricValue,它返回Object,但是没有文档说明如何使用它,我也无法通过谷歌搜索找到任何示例。
那么有什么主意如何最好地改用上述功能以改为使用metricValue?我想摆脱此过时警告,并在以后做证明。
这是我讨厌Java的另一个主要示例。文档中没有使用示例是它的规范:(
答案 0 :(得分:0)
我研究了源代码。 metricValue()
可以返回两个不同的值。
value()
。由于您输入了buffer-available-bytes
,我希望Double在您的情况下会返回。
有很多关于Java的文档...在这种情况下不是。我认为缺少文档是由于Kafka的组合主要用于企业中,而这种变化是相对较新的。
我建议您研究源代码并找出org.apache.kafka.common.metrics.Metrics
中使用的默认类型。
最后一个音符。这不是Spring-Kafka特有的,但与Apache-Kafka有关。