可以在用户级别/用户特定的情况下收集Camel路由度量

时间:2016-05-26 06:38:42

标签: apache-camel

我们正在使用驼峰,jms和休息构建文件处理系统(Web应用程序+有状态)。多个用户可以上传文件。需要显示特定于用户的最小,最大,平均所用时间,平均命中次数等。这几乎与骆驼提供的路线指标一致。有没有办法在用户级别收集此路由指标?或者我们应该扩展指标组件及其注册表以满足我们的需求。

在代码中添加了以下更改以收集指标。

 <!--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>

1 个答案:

答案 0 :(得分:2)

您可以通过设置MetricsConstants.HEADER_METRIC_NAME标头覆盖路由中的指标名称。要获得每个用户的唯一度量标准,只需在度量标准名称中包含唯一的用户名。你可以这样做:

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

这将为您提供每用户指标。在apache网站上有一些涵盖metrics component and how to set variables/values

的文档