Apache camel SOAP调用需要多少时间

Apache camel SOAP调用需要多少时间,apache-camel,cxf,spring-camel,Apache Camel,Cxf,Spring Camel,目前,我们正在使用ApacheCamel(带有SpringBoot)作为集成平台。我们有多个后端系统要集成。我们通常使用apachecxf和CXF-RS来调用这些系统 我们希望记录我们等待后端系统的时间,以及应用程序带来的开销 我们已经创建了一个EventNotifierSupportbean,可以在其中记录以下内容: ExchangeCreatedEvent和ExchangeCompletedEvent事件之间的时间。我认为这大约是满足请求所需的全部时间。(全职作为我们的开销和后端系统的时间

目前,我们正在使用ApacheCamel(带有SpringBoot)作为集成平台。我们有多个后端系统要集成。我们通常使用apachecxf和CXF-RS来调用这些系统

我们希望记录我们等待后端系统的时间,以及应用程序带来的开销

我们已经创建了一个
EventNotifierSupport
bean,可以在其中记录以下内容:

  • ExchangeCreatedEvent
    ExchangeCompletedEvent
    事件之间的时间。我认为这大约是满足请求所需的全部时间。(全职作为我们的开销和后端系统的时间)

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

我对后者有意见。在高负载下,我们的应用程序处理SOAP响应需要花费相当多的时间,这段时间包含在
timetake
属性中


什么是衡量我们等待后端系统的时间的合适的Camel方法?

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


记录在案:我认为我能够为SOAP请求测量更精确的时间,如果

  • 我已经实现了一个
    org.apache.cxf.interceptor.interceptor
    (基于
    org.apache.cxf.interceptor.MessageSenderInterceptor.MessageSenderIndingInterceptor
    类-我还需要设置构造函数参数!)
  • 我将这个拦截器注册到CXF端点,正如这里提到的:

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


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

是的,我已经看到了其中的一些指标,但我没有看到任何一个指标像我希望的那样详细。你需要深入研究SOAP调用中使用的任何Camel组件,并使用其日志记录或它所具有的任何优秀级别的计时。或者看看一些TCP包级网络工具等。克劳斯,我们用模拟响应模拟器取代了后端,该模拟器以固定的500毫秒延迟发送每个响应。我们的集成平台具有巨大的负载,使用CXF组件的Camel
timetake
属性返回测量值长达25-30秒,而我们有证据表明每次响应都在510ms左右到达。