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 ------------------------------------------------------------------------