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

com.khubla.pragmatach.plugin.statsd.StatsDClientImplementation Maven / Gradle / Ivy

package com.khubla.pragmatach.plugin.statsd;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.khubla.pragmatach.framework.api.Request;
import com.khubla.pragmatach.framework.application.Application;
import com.khubla.pragmatach.framework.lifecycle.LifecycleListener;
import com.khubla.pragmatach.framework.router.PragmatachRoute;
import com.timgroup.statsd.NonBlockingStatsDClient;
import com.timgroup.statsd.StatsDClient;

/**
 * @author tome
 */
public class StatsDClientImplementation implements LifecycleListener {
   /**
    * logger
    */
   private final Logger logger = LoggerFactory.getLogger(this.getClass());
   /**
    * the client
    */
   private static final StatsDClient statsDClient = getStatsDClient();

   public static StatsDClient getStatsdclient() {
      return statsDClient;
   }

   /**
    * get the client
    */
   private static StatsDClient getStatsDClient() {
      try {
         final String prefix = Application.getConfiguration().getParameter("statsd.prefix");
         final String host = Application.getConfiguration().getParameter("statsd.host");
         final String port = Application.getConfiguration().getParameter("statsd.port");
         if ((null != prefix) && (null != host) && (null != port)) {
            return new NonBlockingStatsDClient(prefix, host, Integer.parseInt(port));
         } else {
            return null;
         }
      } catch (final Exception e) {
         throw new ExceptionInInitializerError(e);
      }
   }

   @Override
   public void beginRequest(PragmatachRoute pragmatachRoute, Request request) {
      if (null != statsDClient) {
         /*
          * request count
          */
         statsDClient.incrementCounter("TotalRequests");
      } else {
         logger.info("started: " + request.getMethod() + " request for: " + request.getURI() + " routed to " + pragmatachRoute.getDescription());
      }
   }

   @Override
   public void endRequest(PragmatachRoute pragmatachRoute, Request request) {
      if (null != statsDClient) {
      } else {
         logger.info("completed: " + request.getMethod() + " request for: " + request.getURI() + " routed to " + pragmatachRoute.getDescription());
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy