219.13. MetricsMessageHistoryFactory

Camel 2.17 以降で利用可能

このファクトリーを使用すると、メトリクスを使用して、メッセージのルーティング中にメッセージ履歴のパフォーマンス統計を取得できます。これは、すべてのルートの各ノードにメトリクスタイマーを使用することで機能します。 このファクトリーは、以下の例のように Java および XML で使用できます。 

Java DSL の場合は、以下のようにファクトリーを 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 出力する 1 つのオペレーションがあります。useJmx を true に設定する必要があるのは、統計タイプごとに細かい mbeans を生成する場合のみです。

jmxDomain

org.apache.camel.metrics

JMX ドメイン名

prettyPrint

false

統計情報を json 形式で出力する際に pretty print を使用するかどうか

metricsRegistry

 

共有 com.codahale.metrics.MetricRegistry の使用を許可します。指定しない場合は、Camel はこの CamelContext によって使用される共有インスタンスを作成します。

rateUnit

TimeUnit.SECONDS

メトリクスレポーターまたは統計を json 出力するときのレートに使用する単位。

durationUnit

TimeUnit.MILLISECONDS

メトリクスレポーターまたは統計を json 出力するときの期間に使用する単位。

namePattern

name.routeId.id.type

使用する名前パターン。セパレータとしてドットを使用しますが、これは変更できます。値 namerouteIdtype、および id は実際の値に置き換えられます。name は CamelContext の名前です。routeId はルートの名前です。id パターンはノード ID を表します。そして type は履歴の値です。

実行時に、メトリクスは Java API または JMX からアクセスでき、JSON 出力としてデータを収集できます。

Java コードから、次のように CamelContext からサービスを取得できます。

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

また、JMX API MBean は type=services ツリーに name=MetricsMessageHistoryService で登録されます。