使用Java API定期间隔的Kafka Producer指标

时间:2019-05-08 07:03:20

标签: java apache-kafka jmx kafka-producer-api

我知道Kafka API中提供的metric()方法用于生产者指标。我实际上正在尝试以以下方式定期获取10k条记录,10万条记录等等的指标:

enter image description here

我正在从Intellij IDE运行我的生产者,它将产生大约一百万条记录。我尝试通过以下方式打印指标:

for (Entry<MetricName, ? extends Metric> entry : producer.metrics().entrySet()) {
    System.out.println(entry.getKey().name() + " : " + entry.getValue().metricValue());
}

但是此方法返回生产者的总体指标。

如何使用request-rate获得特定于间隔的request-totalmetrics()生产者指标?

1 个答案:

答案 0 :(得分:2)

您必须以所需的时间间隔明确检查这些指标的值。

(简化逻辑)之类的东西

Producer<String, String> producer = new KafkaProducer<>(configs);

// Find the metrics you are interested in
Metric requestTotalMetric = null;
for (Entry<MetricName, ? extends Metric> entry : producer.metrics().entrySet()) {
    if ("request-total".equals(entry.getKey().name())) {
        requestTotalMetric = entry.getValue();
    }
}

for (int i = 0; i < 1000000000; i++) {
    producer.send(new ProducerRecord<String, String>("topic", "record"));
    // Get metric value at desired interval
    if (i % 100000 == 0) {
        System.out.println(i + " : " + requestTotalMetric.metricValue());
    }
}