camel - 如何接收计数器的指标数据

时间:2014-09-29 10:53:03

标签: spring apache-camel counter metrics

我想要一个判断计数器是否达到特定值的谓词。是否有可能从指标计数器中获取价值?

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

2 个答案:

答案 0 :(得分:1)

我宁愿使用AtomicInteger,将它放在camel上下文中来访问和增加它。使用MVEL形成完成谓词。

谓词应该类似于:

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

答案 1 :(得分:0)

camel-metrics端点不支持创建消费者,我担心您需要在counterPredicate中自己访问MetricsRegistry。

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