209.4. Metric Registry
Camel Metrics コンポーネントは、デフォルトで、60 秒のレポート間隔を持つ Slf4jReporter
を持つ MetricRegistry
インスタンスを使用します。このデフォルトのレジストリーは、MetricRegistry
Bean を提供することでカスタムレジストリーに置き換えることができます。アプリケーションに複数の MetricRegistry
Bean が存在する場合、名前が metricRegistry
のものが使用されます。
たとえば、Spring Java 設定を使用すると、次のようになります。
@Configuration public static class MyConfig extends SingleRouteCamelConfiguration { @Bean @Override public RouteBuilder route() { return new RouteBuilder() { @Override public void configure() throws Exception { // define Camel routes here } }; } @Bean(name = MetricsComponent.METRIC_REGISTRY_NAME) public MetricRegistry getMetricRegistry() { MetricRegistry registry = ...; return registry; } }
@Configuration
public static class MyConfig extends SingleRouteCamelConfiguration {
@Bean
@Override
public RouteBuilder route() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
// define Camel routes here
}
};
}
@Bean(name = MetricsComponent.METRIC_REGISTRY_NAME)
public MetricRegistry getMetricRegistry() {
MetricRegistry registry = ...;
return registry;
}
}
または CDI を使用:
class MyBean extends RouteBuilder { @Override public void configure() { from("...") // Register the 'my-meter' meter in the MetricRegistry below .to("metrics:meter:my-meter"); } @Produces // If multiple MetricRegistry beans // @Named(MetricsComponent.METRIC_REGISTRY_NAME) MetricRegistry registry() { MetricRegistry registry = new MetricRegistry(); // ... return registry; } }
class MyBean extends RouteBuilder {
@Override
public void configure() {
from("...")
// Register the 'my-meter' meter in the MetricRegistry below
.to("metrics:meter:my-meter");
}
@Produces
// If multiple MetricRegistry beans
// @Named(MetricsComponent.METRIC_REGISTRY_NAME)
MetricRegistry registry() {
MetricRegistry registry = new MetricRegistry();
// ...
return registry;
}
}
MetricRegistry
は、レポートに内部スレッドを使用します。バージョン DropWizard 3.0.1
には、ユーザーが終了時にクリーンアップするためのパブリック API はありません。したがって、Camel Metrics コンポーネントを使用すると、Java クラスローダーリークが発生し、場合によっては OutOfMemoryErrors
が発生します。