我想在我的路线中计算步骤的时间。我正在寻找使用驼峰AOP启动计时器,运行步骤,停止并记录计时器。但是AOP现在已被弃用了,我看过使用拦截机制,但它之前只添加了“建议”,我之后也需要它。有干净的方法吗?
答案 0 :(得分:8)
是的,有很多选择。
只是对上面关于Fuse IDE的评论进行了更正。该编辑器是开源的,可供任何人免费使用。您不需要订阅。自Red Hat收购我们以来,我们免费提供此服务。
1) 关于监控。然后你可以查看一些博客 http://camel.apache.org/articles人们写过关于监控Camel应用的文章。
2) 并且在http://camel.apache.org/user-stories.html有一些第三方应用,例如CamelWatch等。
3) James Strachan(Camel的创始人)和Fuse团队的其他人正在为Camel和其他集成框架开发Web控制台,名为Hawt IO - http://hawt.io/
4) 正如艾伦已经指出的那样,你可以使用事件通知器,它会发出你可以利用的事件。
5) 有第三方工具可以集成的JMX API,例如Fuse HQ / JON / Hyperic /等等
6) 有一个用于nagios集成的camel-nagios组件
7) “骆驼在行动”一书的第12章还有一些细节:http://manning.com/ibsen/
8) 还有一个日志组件可以使用组大小/组间隔选项http://camel.apache.org/log
来记录性能9) 还有跟踪器,它也可用于跟踪和测量路由http://camel.apache.org/tracer
的性能答案 1 :(得分: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,example here http://fusesource.com/docs/ide/2.1/tutorials/RiderTutorialTrace.html
3)您可以使用JMX连接到您的Java实例,并且可以从那里获取大量信息
答案 2 :(得分:1)
对我来说非常简单的方法:
...
.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}")