2014-09-29 58 views
2

我想要一个谓词来检查计数器是否达到了特定的值。是否有可能从指标计数器中获得价值?骆驼 - 如何接收计数器的度量数据

from("file:/some/file/to/check.txt").id("read-file") 
    .split() 
    .tokenize("\n") 
    .streaming() 
    .parallelProcessing() 
    .to("metrics:counter:simple.counter") 
    .to("direct:test"); 

from("direct:test").id("do-something") 
    . // do something 
    .aggregate(constant(true), aggregationStrategy) 
    .completionPredicate(counterPredicate) 
    . // do something after finished all lines 
    .to("direct:end"); 

我需要一些帮助counterPredicate

回答

0

camel-metrics端点不支持创建使用者,恐怕您需要自己访问您的counterPredicate中的MetricsRegistry。

MetricRegistryService registryService = camelContext.hasService(MetricsRegistryService.class); 
if (registryService != null) { 
    MetricsRegistry registry = registryService.getMetricsRegistry(); 
    ... 
} 
1

我宁愿使用AtomicInteger,把它放在驼峰上下文中来访问并增加它。使用MVEL来形成完成谓词。

谓语应是这样:

mvel("this.context.property.counter == this.context.property.DESIRED_VALUE")