I have written a simple Java class to attempt to exercise the camel-metrics 
component.  In this example, I'm writing a standalone Java batch process, which 
will read files from an input directory, and deposit the files in an output 
directory.  I'm attempting to use the camel-metrics component to capture how 
many files were read (using the name "files-processed").  I've configured the 
class to only run for seventy seconds, giving the camel-metrics component an 
opportunity to output the values of the metric being captured to the 
application log (which its configured to do at sixty seconds intervals, and 
which appears to work properly).  

Prior to suspending/stopping my CamelContext, I attempted to retrieve the 
metrics as described in the camel-metrics component documentation.  
Unfortunately, when I look at the contents of the metrics, my custom metric is 
nowhere to be found.  Below, please find the source for the sample class that I 
created, and its logged output.

Am I doing something wrong?

============================

Camel Version
2.14.0

JRE Version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

============================

package ...

import com.codahale.metrics.Counter;
import com.codahale.metrics.MetricRegistry;
import java.util.SortedMap;
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.metrics.routepolicy.MetricsRegistryService;
import org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicyFactory;
import org.apache.camel.impl.DefaultCamelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    
    public static void main(String[] args) throws Exception {
        Logger LOG = LoggerFactory.getLogger(Main.class);
        
        CamelContext context = new DefaultCamelContext();
        
        RouteBuilder rb = new RouteBuilder() { 
            @Override
            public void configure() throws Exception {
                from("file://c:/test/input").
                        routeId("testroute").
                        log("Processing file [${header.CamelFileName}]").
                        to("metrics:counter:files-processed").
                        to("file://c:/test/output");
            }
        };
        context.addRoutes(rb);
        
        MetricsRoutePolicyFactory mrpf = new MetricsRoutePolicyFactory();
        context.addRoutePolicyFactory(mrpf);
        
        context.start();
        
        int sleepCounter = 0;
        while (sleepCounter < 7) {
            sleepCounter++;
            Thread.sleep(10000);
            LOG.info("Zzz...({} seconds)", sleepCounter * 10);
        }
        
        MetricsRegistryService regSvc = 
context.hasService(MetricsRegistryService.class);
        if(regSvc != null) { 
            // Dump the statistics to the log in JSON format.
            regSvc.setPrettyPrint(true);
            LOG.info(regSvc.dumpStatisticsAsJson());

            // Do it again, retrieving the map of counters from the 
MetricRegistry object.
            LOG.info("----------");
            MetricRegistry reg = regSvc.getMetricsRegistry();
            SortedMap<String, Counter> counters = reg.getCounters();
            LOG.info("Keys found {{}]", counters.keySet().size());
            for(String key : counters.keySet()) { 
                LOG.info("--- key [{}] - value [{}]", key, 
counters.get("key").getCount());
            }                
        } else { 
            System.out.println("Couldn't find MetricsRegisteryService 
instance");
        }
        context.suspend();        
        context.stop();
    }
}

============================
--- exec-maven-plugin:1.2.1:exec (default-cli) @ metricstest ---
2014-11-06 19:15:23 INFO  DefaultCamelContext        :1731 - Apache Camel 
2.14.0 (CamelContext: camel-1) is starting
2014-11-06 19:15:23 INFO  ManagedManagementStrategy  : 187 - JMX is enabled
2014-11-06 19:15:23 INFO  DefaultTypeConverter       :  50 - Loaded 178 type 
converters
2014-11-06 19:15:23 INFO  MetricsComponent           : 108 - Creating new 
default MetricRegistry
2014-11-06 19:15:23 INFO  MetricsComponent           :  57 - Metrics type: 
counter; name: files-processed
2014-11-06 19:15:23 INFO  DefaultCamelContext        :1931 - 
AllowUseOriginalMessage is enabled. If access to the original message is not 
needed, then its recommended to turn this option off as it may improve 
performance.
2014-11-06 19:15:23 INFO  DefaultCamelContext        :1941 - StreamCaching is 
not in use. If using streams then its recommended to enable stream caching. See 
more details at http://camel.apache.org/stream-caching.html
2014-11-06 19:15:23 INFO  DefaultCamelContext        :2453 - Route: testroute 
started and consuming from: Endpoint[file://c:/mdm/test/input]
2014-11-06 19:15:23 INFO  DefaultCamelContext        :1766 - Total 1 routes, of 
which 1 is started.
2014-11-06 19:15:23 INFO  DefaultCamelContext        :1767 - Apache Camel 
2.14.0 (CamelContext: camel-1) started in 0.608 seconds
2014-11-06 19:15:24 INFO  testroute                  :  96 - Processing file 
[testfile1.txt]
2014-11-06 19:15:25 INFO  testroute                  :  96 - Processing file 
[testfile2.txt]
2014-11-06 19:15:25 INFO  testroute                  :  96 - Processing file 
[testfile3.txt]
2014-11-06 19:15:33 INFO  Main                       :  47 - Zzz...(10 seconds)
2014-11-06 19:15:43 INFO  Main                       :  47 - Zzz...(20 seconds)
2014-11-06 19:15:53 INFO  Main                       :  47 - Zzz...(30 seconds)
2014-11-06 19:16:03 INFO  Main                       :  47 - Zzz...(40 seconds)
2014-11-06 19:16:13 INFO  Main                       :  47 - Zzz...(50 seconds)
2014-11-06 19:16:23 INFO  MetricsComponent           : 104 - type=COUNTER, 
name=files-processed, count=3
2014-11-06 19:16:23 INFO  Main                       :  47 - Zzz...(60 seconds)
2014-11-06 19:16:33 INFO  Main                       :  47 - Zzz...(70 seconds)
2014-11-06 19:16:34 INFO  Main                       :  53 - {
  "version" : "3.0.0",
  "gauges" : { },
  "counters" : { },
  "histograms" : { },
  "meters" : { },
  "timers" : {
    "camel-1:testroute.responses" : {
      "count" : 3,
      "max" : 157.060387,
      "mean" : 88.249202,
      "min" : 44.265085,
      "p50" : 63.422134,
      "p75" : 157.060387,
      "p95" : 157.060387,
      "p98" : 157.060387,
      "p99" : 157.060387,
      "p999" : 157.060387,
      "stddev" : 60.35712482735794,
      "m15_rate" : 0.558194480485237,
      "m1_rate" : 0.20307925506404548,
      "m5_rate" : 0.48311899441084233,
      "mean_rate" : 0.04263368988938351,
      "duration_units" : "milliseconds",
      "rate_units" : "calls/second"
    }
  }
}
2014-11-06 19:16:34 INFO  Main                       :  54 - ----------
2014-11-06 19:16:34 INFO  Main                       :  57 - Keys found {0]
2014-11-06 19:16:34 INFO  DefaultCamelContext        :1648 - Apache Camel 
2.14.0 (CamelContext: camel-1) is suspending
2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 172 - Starting to 
graceful shutdown 1 routes (timeout 300 seconds)
2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 606 - Route: testroute 
suspend complete, was consuming from: Endpoint[file://c:/mdm/test/input]
2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 222 - Graceful shutdown 
of 1 routes completed in 0 seconds
2014-11-06 19:16:34 INFO  DefaultCamelContext        :1686 - Apache Camel 
2.14.0 (CamelContext: camel-1) is suspended in 0.032 seconds
2014-11-06 19:16:34 INFO  DefaultCamelContext        :1958 - Apache Camel 
2.14.0 (CamelContext: camel-1) is shutting down
2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 172 - Starting to 
graceful shutdown 1 routes (timeout 300 seconds)
2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 609 - Route: testroute 
shutdown complete, was consuming from: Endpoint[file://c:/mdm/test/input]
2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 222 - Graceful shutdown 
of 1 routes completed in 0 seconds
2014-11-06 19:16:34 INFO  DefaultCamelContext        :2040 - Apache Camel 
2.14.0 (CamelContext: camel-1) uptime 1 minute
2014-11-06 19:16:34 INFO  DefaultCamelContext        :2041 - Apache Camel 
2.14.0 (CamelContext: camel-1) is shutdown in 0.000 seconds
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 1:12.415s
Finished at: Thu Nov 06 19:16:34 EST 2014
Final Memory: 5M/120M
------------------------------------------------------------------------

Reply via email to