3

我想计时我路线中步骤的执行时间。我正在研究使用骆驼 AOP 来启动计时器、运行步骤、停止并记录计时器。但是现在不推荐使用 AOP,我研究了使用拦截机制,但它之前只是添加了“建议”,之后我也需要它。有没有一种干净的方法可以做到这一点?

4

3 回答 3

9

是的,有很多选择。

只是对上面关于 Fuse IDE 的评论的更正。这个编辑器是开源的,任何人都可以免费使用。您不需要订阅。自 Red Hat 收购我们以来,我们免费提供此服务。

1)关于监控。然后,您可以查看一些博客 http://camel.apache.org/articles,人们在其中撰写了有关监控 Camel 应用程序的文章。

2) 在http://camel.apache.org/user-stories.html有一些 3rd 方应用,例如 CamelWatch 等。

3) James Strachan(Camel 的创始人)和 Fuse 团队的其他人正在为 Camel 和其他集成框架开发一个 Web 控制台,称为 Hawt IO - http://hawt.io/

4) 正如 Alan 已经指出的那样,您可以使用事件通知器,它会发出您可以利用的事件。

5) 有 JMX API 可以与第 3 方工具集成,例如 Fuse HQ / JON / Hyperic / 等

6)nagios集成有camel-nagios组件

7)骆驼行动书的第12章也有一些细节:http: //manning.com/ibsen/

8)还有一个日志组件,可以使用组大小/组间隔选项来记录性能http://camel.apache.org/log

9)还有tracer,也可以用来跟踪和测量路由性能http://camel.apache.org/tracer

于 2012-12-21T13:42:26.390 回答
7

你在这里有很多选择,包括追求你最初的想法

1)你可以很容易地连接到 Camel 的 EventNotifier,这里有一个基本的例子http://camel.apache.org/eventnotifier-to-log-details-about-all-sent-exchanges.html

INFO  CamelContextFactoryBean        - Using custom EventNotifier with id: myLoggingEventNotifier and implementation: org.apache.camel.processor.MyLoggingSentEventNotifer@76bf9e
INFO  MyLoggingSentEventNotifer      - Took 1001 millis to send to: Endpoint[direct://bar]
INFO  MyLoggingSentEventNotifer      - Took 0 millis to send to: Endpoint[mock://result]
INFO  MyLoggingSentEventNotifer      - Took 1013 millis to send to: Endpoint[direct://start]

2)您可以使用Fuse IDE例如这里 http://fusesource.com/docs/ide/2.1/tutorials/RiderTutorialTrace.html

3) 您可以使用 JMX 连接到您的 java 实例,您可以从那里获取很多信息

于 2012-12-21T13:34:07.977 回答
3

对我来说非常简单的方法:

...
.process(exchange -> exchange.getIn().setHeader("start", DateTime.now()))
.to("direct:calc")
.process(exchange -> exchange.getIn().setHeader("end", DateTime.now()))
.log("=== route execution time: ${header.start} - ${header.end}")
于 2018-08-27T11:51:37.227 回答