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 ツリーに登録されています。