我想计时我路线中步骤的执行时间。我正在研究使用骆驼 AOP 来启动计时器、运行步骤、停止并记录计时器。但是现在不推荐使用 AOP,我研究了使用拦截机制,但它之前只是添加了“建议”,之后我也需要它。有没有一种干净的方法可以做到这一点?
3 回答
是的,有很多选择。
只是对上面关于 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
你在这里有很多选择,包括追求你最初的想法
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 实例,您可以从那里获取很多信息
对我来说非常简单的方法:
...
.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}")