2014-10-14 2 views
1

Apache Camel 2.14의 메트릭 구성 요소에서 Simple Express Language를 사용하여 카운터 이름을 설정하려고하지만 메트릭 구성 요소가이를 사용하지 않는 것으로 보입니다.Camel-Metrics : 카운터 이름에 경로 ID를 사용하십시오.

이 나는 ​​시도했다 :

from("direct:foo").routeId("routeFoo") 
    .to("metrics:counter:${id}") 

그리고

from("direct:foo").routeId("routeFoo") 
    .to("metrics:counter:"+ simple("${id}")) 

그러나 두 경우 모두

는 카운터의 이름은 $ {ID}로 설정되어 있습니다.

어쨌든이 구성 요소 URI에 표현식 언어를 사용합니까?

감사

편집

: 헤더를 추가

은 작업을 수행합니다

.setHeader(MetricsConstants.HEADER_METRIC_NAME, simple("${id}.${header.operationName}")) 

을하지만 URI에서 직접 사용자 SEL에 더 편리 할 것입니다.

답변

2

Simple 언어에 대한 Camel 설명서를 확인하십시오. 여기에서 은 메시지 ID를 나타내고 ${routeId}은 경로 ID를 나타냅니다.

편집 : 나는 원래의 우려 사항을 오해했다. 올바른 변수가 경로 ID에 대한 것이 아니라 to에 어떻게 주입했는지 알았다.

기본 문제는 to으로 동적 경로를 수행하려고한다는 것입니다. 끝점을 구성하기 위해 문자열을 연결하려고 시도하지만 경로가 실행될 때가 아니라 configure 메서드가 호출 될 때이 연결이 평가됩니다.

음, 낙타는 recipient list, dynamic Router 또는 routing slip과 같이 동적 경로를 수행하기위한 몇 가지 메커니즘을 가지고 있습니다.

from("direct:foo").routeId("routeFoo").recipientList(simple("metrics:counter:${routeId}")); 

당신은 헤더를 설정하면 너무 많은 것을 우려한다면, 그것은 이러한 메커니즘은 많은 것을 나에게 분명하지 않다 :

는 예를 들어, 같은 경로를 얻을받는 사람 목록을 사용할 수 있습니다 더 간단 해.

+0

확인에 대한 업데이트 된 대답하지만 문제는 값이 그것은 내가 질문을 오해처럼 보이는 – Thomas

+0

평가되지 않는 것입니다으로는 아무것도 변경되지 않습니다. 동적 라우팅과 관련된 내 대답을 추가했습니다. – Ray

+0

감사합니다. 나는 이걸 내일 시험해 보겠다. – Thomas

관련 문제