2

目前我们使用 Apache Camel(带有 Spring Boot)作为集成平台。我们有多个后端系统要集成。大多数情况下,我们使用 Apache CXF 和 CXF RS 来调用这些系统。

我们想记录我们等待后端系统的时间,以及我们的应用程序带来了多少开销。

我们创建了一个EventNotifierSupportbean,我们可以在其中记录以下内容:

  • ExchangeCreatedEventExchangeCompletedEvent事件之间的时间。我认为这是处理请求所需的全部时间。(全职作为我们的开销和后端系统的时间)

  • 我可以记录˙通知的timeTaken属性ExchangeSentEvent

我对后者有问题。在高负载下,我们的应用程序需要花费大量时间来处理 SOAP 响应,并且该时间包含在timeTaken属性中。

衡量我们等待后端系统时间的正确骆驼方法是什么?

4

2 回答 2

0

记录在案:我想我可以为 SOAP 请求测量更精确的时间,如果

  • 我已经实现了一个org.apache.cxf.interceptor.Interceptor(基于org.apache.cxf.interceptor.MessageSenderInterceptor.MessageSenderEndingInterceptor类 - 我还需要设置构造函数参数!)
  • 我将此拦截器注册到 CXF 端点,如下所述:http: //camel.apache.org/cxf.html

我认为 SOAP 响应是在一个单独的线程池中使用的,并且在高负载下,从池的队列中使用一个响应对象需要很长时间。但是,如果我如上所述设置 CXF 拦截器,它会在响应放入队列之前运行。

我没有测试过这个解决方案,也没有再实现它。但如果我将来遇到这个问题(你好,未来的谷歌我!),我会开始关注这些地方。

于 2017-11-02T21:22:05.647 回答
0

Camel 通过开箱即用的 JMX 支持支持可追溯性。您可以实时深入了解各种分辨率,例如路由或单个端点,并且只需使用 JConsole,它就可以报告完成的最小/最大/平均时间等等。这至少应该让您对在单个端点上调用的后端进程的请求->响应时间有所了解。

看这里。

于 2017-10-31T17:26:50.937 回答