All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.edgar615.util.eventbus.metric.ConsumerMetricsImpl Maven / Gradle / Ivy

package com.github.edgar615.util.eventbus.metric;

import com.codahale.metrics.Counter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import com.github.edgar615.util.metrics.ConsumerMetrics;
import com.github.edgar615.util.metrics.Metrics;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

/**
 * Created by Edgar on 2017/3/29.
 *
 * @author Edgar  Date 2017/3/29
 */
public class ConsumerMetricsImpl implements ConsumerMetrics {
  private final MetricRegistry registry;

  private final Counter consumerCompleted;

  private final Counter consumerProcessed;

  private final Timer consumerTimer;

  public ConsumerMetricsImpl() {
    this.registry = new MetricRegistry();
    String baseName = "eventbus";
    this.consumerCompleted = registry.counter(MetricRegistry.name(baseName, "consumer",
            "completed"));
    this.consumerProcessed =
            registry.counter(MetricRegistry.name(baseName, "consumer", "processed"));
    this.consumerTimer = registry.timer(MetricRegistry.name(baseName, "consumer"));
  }


  @Override
  public void consumerStart() {
    consumerProcessed.inc();
  }

  @Override
  public void consumerEnd(long duration) {
    consumerProcessed.dec();
    consumerCompleted.inc();
    consumerTimer.update(duration, TimeUnit.SECONDS);
  }

  @Override
  public Map metrics() {
    Map map = registry.getMetrics().
            entrySet().
            stream().
            collect(Collectors.toMap(
                    e -> e.getKey(),
                    e -> Helper.convertMetric(e.getValue())));
    return new HashMap<>(map);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy