我们正在使用驼峰,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>
答案 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
的文档