在Camel中提取路由统计信息

时间:2014-03-03 10:09:47

标签: java apache-camel

在JConsole上,我们可以看到以下路由统计信息。

  1. 最小/最大/平均处理时间
  2. 第一个/最后一个消息完成时间
  3. 失败或重新发送的邮件数。
  4. 处理的交易总数
  5. 要求:我需要在网页上显示以上数据。 以下是我的代码:

    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.
    }
    }
    

    提前致谢。

    请建议我如何获得最小/最大/平均处理时间,第一个/最后一个消息完成时间等。

2 个答案:

答案 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 tutorialApache Camel JMX Documentation

您可以使用org.apache.camel.management.PublishEventNotifier

实际计算您需要的信息

一种类型的事件将被通知有关每条路线的骆驼交换(如完成,失败......)。之后您需要的唯一信息是此交换(最后一次交换)的处理时间,可以使用JMX(LastProcessingTime)获得。

一旦您拥有每条路线的交换处理时间,您所需的所有信息都可以实时计算。