2016-05-26 7 views
0

私たちは、ラクダ、jms、および休憩を使用してファイル処理システム(Webアプリケーション+ステートフル)を構築しています。複数のユーザーがファイルをアップロードできます。ユーザーに固有の最小、最大、平均時間、平均ヒット数などを表示する必要があります。これは、ラクテルによって提供されたルートメトリクスにほぼ沿っています。このルートメトリックをユーザーレベルで収集する方法はありますか?私たちのニーズを満たすためにメトリクスコンポーネントとレジストリを拡張する必要があります。は、ユーザーレベル/ユーザー固有のCamelルートメトリックを収集することができます

メトリックを収集するコードを以下に変更しました。

<!--added to bean context --> 
<bean id="policy" class="org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicy"/> 

<!-- below changes done to route -->   
<route id="prefRate" routePolicyRef="policy"> 

    <from uri="cxfrs://bean://prefRateService?bindingStyle=SimpleConsumer"/> 
     <log message="Processing username:${headers.username}"/> 
    <setHeader headerName="HEADER_METRIC_NAME"> 
       <simple>${headers.username}</simple> 
    </setHeader> 
    <to uri="log:body?level=INFO"/> 
    <to uri="bean:fxPrefRateProcessor" /> 
     <to uri="metrics:meter:prefRateCounter"/> 
    </route> 

答えて

2

MetricsConstants.HEADER_METRIC_NAMEヘッダーを設定すると、ルート内のメトリックの名前を上書きできます。ユーザーごとにユニークなメトリックを取得するには、メトリック名に一意のユーザー名を含めます。

.setHeader(MetricsConstants.HEADER_METRIC_NAME, simple("your.metric.name.for.user.${body.user}")) 
.to("metrics:meter:your.metric.name"); 

これにより、ユーザーごとの指標が得られます。 metrics component and how to set variables/values

+0

私たちはあなたの推薦に従って変更を行っています。しかし、hawtioのメトリックを見ることができません。 –

+0

あなたのユーザー名が正しく入力されていることを確認してください(上記の単純な例は例です。私はあなたの一意のユーザー文字列を交換所に保存する場所を知らない)、正しいメトリックがログインしていることを確認してくださいキャメルログ。 – AndyN

+0

名前は一意に設定され、hawtIOのト​​レースを介してチェックされます。それは私の間違いです。 Javaコードからメトリックを引き出すことができることをドキュメントで明確に示しています。一方、私はラクダのログを提案ごとにチェックします。 –