我正在与Java生产者和消费者合作,我正在尝试可视化我的Java应用程序的消费者滞后(我的目的滞后(。我想将该滞后记录为标准输出。我尝试使用JMX,但我无法在java应用程序中使用它。 我已经使用了这个(只是一个片段,消费者的设置是在应用程序中完成的(
private KafkaConsumer<String, String> consumer
Map<MetricName, ? extends Metric> metrics = consumer.metrics();
System.out.println(metrics);
但它只给了我指标的描述,而不是值。 我在我的 Kafka CLI 中看到,它显示了该消费者的正确滞后。
首先确定您对使用文档或打印所有指标感兴趣的指标,就像您的问题一样。
然后从使用者那里找到指标。例如,如果您对request-latency-avg
感兴趣:
// Find the metrics you are interested in
Metric requestLatencyAvgMetric = null;
for (Entry<MetricName, ? extends Metric> entry : consumer.metrics().entrySet()) {
if ("request-latency-avg".equals(entry.getKey().name())) {
requestLatencyAvgMetric = entry.getValue();
}
}
然后,您可以在需要时使用以下方法检索该值:
requestLatencyAvgMetric.metricValue()