2014-09-29 6 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

낙타 메트릭 엔드 포인트는 소비자 생성을 지원하지 않습니다. 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") 
:

술어는 같을 것이다