Package com.bazoud.metrics.springbatch.timer

Source Code of com.bazoud.metrics.springbatch.timer.TimerHolder

package com.bazoud.metrics.springbatch.timer;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import static com.codahale.metrics.MetricRegistry.name;
import static com.bazoud.metrics.springbatch.MetricsHelper.METRICS_BATCH_GROUP;
import static com.bazoud.metrics.springbatch.MetricsHelper.STEP_KIND;
import static com.bazoud.metrics.springbatch.MetricsHelper.TIMED_KIND;

/**
* @author @obazoud (Olivier Bazoud)
*/
@Component
public class TimerHolder implements DisposableBean {
  @Autowired
  private MetricRegistry metricRegistry;
  private String group = METRICS_BATCH_GROUP;
  private Map<String, Timer.Context> timerContexts = new ConcurrentHashMap<>();

  public void time(String jobName, String stepName, String kind) {
    String metricName = stepName == null ?
        name(group, jobName, kind, TIMED_KIND) :
        name(group, jobName, STEP_KIND, stepName, kind, TIMED_KIND);
    Timer timer = metricRegistry.timer(metricName);
    Timer.Context timerContext = timer.time();
    timerContexts.put(metricName, timerContext);
  }

  public void stop(String jobName, String stepName, String kind) {
    String metricName = stepName == null ?
        name(group, jobName, kind, TIMED_KIND) :
        name(group, jobName, STEP_KIND, stepName, kind, TIMED_KIND);
    Timer.Context timerContext = timerContexts.get(metricName);
    if (timerContext != null) {
      timerContext.stop();
      timerContexts.remove(metricName);
    }
  }

  public void setMetricRegistry(MetricRegistry metricsRegistry) {
    this.metricRegistry = metricsRegistry;
  }

  public void setGroup(String group) {
    this.group = group;
  }

  @Override
  public void destroy() throws Exception {
    timerContexts.clear();
  }

}
TOP

Related Classes of com.bazoud.metrics.springbatch.timer.TimerHolder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.