在JConsole上,我们可以看到以下路由统计信息。
要求:我需要在网页上显示以上数据。 以下是我的代码:
public void process(Exchange exchange) throws Exception {
CamelContext context = exchange.getContext();
List<Route> routeObj = context.getRoutes();
for (Route routeId : routeObj) {
boolean started = context.getRouteStatus(strRouteId).isStarted();
boolean stopped = context.getRouteStatus(strRouteId).isStopped();
boolean suspended = context.getRouteStatus(strRouteId).isSuspended();
// TODO: find min/max/mean processing time, first/last message
// completion time, etc.
}
}
提前致谢。
请建议我如何获得最小/最大/平均处理时间,第一个/最后一个消息完成时间等。
答案 0 :(得分:1)
例如,请参阅可以转储统计信息的Camel Karaf命令。他们使用JMX API来做到这一点。
示例是context-info命令:https://github.com/apache/camel/blob/master/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
答案 1 :(得分:0)
Apache camel使用JMX公开这些信息。
一个很好的起点是official JMX tutorial和Apache Camel JMX Documentation
您可以使用org.apache.camel.management.PublishEventNotifier
一种类型的事件将被通知有关每条路线的骆驼交换(如完成,失败......)。之后您需要的唯一信息是此交换(最后一次交换)的处理时间,可以使用JMX(LastProcessingTime)获得。
一旦您拥有每条路线的交换处理时间,您所需的所有信息都可以实时计算。