219.13. MetricsMessageHistoryFactory

Camel 2.17로 사용 가능

이 팩토리를 사용하면 메시지를 라우팅하는 동안 메트릭을 사용하여 메시지 기록 성능 통계를 캡처할 수 있습니다. 모든 경로의 각 노드에 대해 메트릭 타이머를 사용 하 여 작동합니다.It works by using a metrics Timer for each node in all the routes. 이 팩토리는 아래 예제와 같이 Java 및 XML에서 사용할 수 있습니다. 

Java에서 다음과 같이 팩토리를 CamelContext 로 설정했습니다.

context.setMessageHistoryFactory(new MetricsMessageHistoryFactory());

그리고 XML DSL에서 다음과 같이 <bean>를 정의합니다.

  <!-- use camel-metrics message history to gather metrics for all messages being routed -->
  <bean id="metricsMessageHistoryFactory" class="org.apache.camel.component.metrics.messagehistory.MetricsMessageHistoryFactory"/>

다음 옵션은 공장에서 지원됩니다.

이름기본설명

useJmx

false

com.codahale.metrics.JmxReporter 를 사용하여 JMX에 대한 세분화된 통계를 보고할지 여부입니다.
CamelContext에서 JMX가 활성화된 경우 JMX 트리의 서비스 유형에 MetricsRegistryService mbean이 포함됩니다. 이 mbean에는 json을 사용하여 통계를 출력하는 단일 작업이 있습니다. useJmx 를 true로 설정하는 것은 통계 유형별로 세분화된 무비란을 원하는 경우에만 필요합니다.

jmxDomain

org.apache.camel.metrics

JMX 도메인 이름

prettyPrint

false

json 형식으로 통계를 출력할 때 거의 출력할지 여부

metricsRegistry

 

공유 com.codahale.metrics.MetricRegistry. 이 Camel을 제공하지 않으면 Camel에서 이 CamelContext에서 사용하는 공유 인스턴스를 생성합니다.

rateUnit

TimeUnit.SECONDS

지표 보고기의 비율 또는 통계를 json으로 덤프할 때 사용할 단위입니다.

durationUnit

TimeUnit.MILLISECONDS

지표 보고기의 기간 동안 사용하거나 통계를 json으로 덤프할 때 사용할 단위입니다.

namePattern

name.routeId.id.type

사용할 이름 패턴입니다. 점을 구분 기호로 사용하지만 변경할 수 있습니다. 값 이름, routeId, type, id 는 실제 값으로 교체됩니다. 여기서 name 은 CamelContext의 이름입니다. routeId 는 경로의 이름입니다. id 패턴은 노드 ID를 나타냅니다. type 은 역사의 값입니다.

런타임 시 Java API 또는 JMX에서 메트릭에 액세스할 수 있으므로 데이터를 json 출력으로 수집할 수 있습니다.

Java 코드에서 다음과 같이 CamelContext에서 서비스를 가져올 수 있습니다.

MetricsMessageHistoryService service = context.hasService(MetricsMessageHistoryService.class);
String json = service.dumpStatisticsAsJson();

그리고 MBean이 MBean이 name=MetricsMessageHistoryService 와 함께 type=services 트리에 등록됩니다.