219.12. MetricsRoutePolicyFactory

此工厂允许为每个路由添加 RoutePolicy,该路由使用 Dropwizard 指标公开路由利用率统计。此工厂可以在 Java 和 XML 中使用,作为以下示例。 

注意

如果只想检测一些选择的路由,您可以使用 MetricsRoutePolicyFactory 定义 MetricsRoutePolicy。

从 Java 中,您刚刚将工厂添加到 CamelContext 中,如下所示:

context.addRoutePolicyFactory(new MetricsRoutePolicyFactory());

在 XML DSL 中,您将定义 <bean>,如下所示:

  <!-- use camel-metrics route policy to gather metrics for all routes -->
  <bean id="metricsRoutePolicyFactory" class="org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicyFactory"/>

MetricsRoutePolicyFactory 和 MetricsRoutePolicy 支持以下选项:

名称default描述

useJmx

false

是否使用 com.codahale.metrics.JmxReporter 向 JMX 报告精细统计。
请注意,如果在 CamelContext 上启用了 JMX,则会在 JMX 树中的服务类型下列出 MetricsRegistryService mbean。该 mbean 有一个操作来通过 json 输出统计信息。只有在每个统计类型需要精细的 mbeans 时,才需要将 useJmx 设置为 true。

jmxDomain

org.apache.camel.metrics

JMX 域名

prettyPrint

false

是否在以 json 格式输出统计信息时打印情况

metricsRegistry

 

allow 使用共享的 com.codahale.metrics.MetricRegistry。如果没有提供,Camel 将创建此 CamelContext 使用的共享实例。

rateUnit

TimeUnit.SECONDS

指标报告者中用于速率的单位,或者将统计信息转储到 json。

durationUnit

TimeUnit.MILLISECONDS

指标报告程序中的 for 持续时间或者将统计信息转储到 json 时使用的单位。

namePattern

名称.routeId.type

Camel 2.17: 要使用的名称模式。使用点作为分隔符,但您可以修改。值 名称routeIdtype 将替换为实际值。其中 name 是 CamelContext 的名称。routeId 是路由的名称。type 是响应的值。

 

从 Java 代码中,您可以存放来自 org.apache.camel.component.metrics.routepolicy.MetricsRegistry 的 com.codahale.metrics.MetricsRegistryService 的 com.codahale.metrics.MetricRegistry Registry。

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