我想要一个判断计数器是否达到特定值的谓词。是否有可能从指标计数器中获取价值?
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 :(得分: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();
...
}