220.13. MetricsMessageHistoryFactory
Camel 2.17 以降で利用可能
このファクトリーでは、メトリクスを使用して、メッセージのルーティング中にメッセージ履歴のパフォーマンス統計情報をキャプチャーできます。これは、すべてのルートの各ノードにメトリクスタイマーを使用することで機能します。このファクトリーは、以下の例のように Java および XML で使用できます。
Java の場合は、以下のようにファクトリーを CamelContext に設定するだけです。
context.setMessageHistoryFactory(new MetricsMessageHistoryFactory());
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"/>
<!-- 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 |
|
| jmxDomain | org.apache.camel.metrics | JMX ドメイン名 |
| prettyPrint | false | 統計情報を json 形式で出力する際に pretty print を使用するかどうか |
| metricsRegistry |
共有 | |
| rateUnit | TimeUnit.SECONDS | メトリクスレポーターまたは統計を json 出力するときのレートに使用する単位。 |
| durationUnit | TimeUnit.MILLISECONDS | メトリクスレポーターまたは統計を json 出力するときの期間に使用する単位。 |
| namePattern |
|
使用する名前パターン。セパレータとしてドットを使用しますが、これは変更できます。値 |
実行時に、メトリクスは Java API または JMX からアクセスでき、JSON 出力としてデータを収集できます。
Java コードから、次のように CamelContext からサービスを取得できます。
MetricsMessageHistoryService service = context.hasService(MetricsMessageHistoryService.class); String json = service.dumpStatisticsAsJson();
MetricsMessageHistoryService service = context.hasService(MetricsMessageHistoryService.class);
String json = service.dumpStatisticsAsJson();
また、JMX API MBean は、name=MetricsMessageHistoryService で type=services ツリーに登録されています。