我有一个Springboot Camel应用程序。这是我的骆驼路线
<?xml version="1.0" encoding="UTF-8"?>
<log message="direct:get_so_default request_payload=$simple{body}"/>
<doTry>
<bean id="col0" ref="stepExecuter" method="execute('endPoint1A')"/>
<bean id="col1" ref="stepExecuter" method="execute('endPoint1B')"/>
<bean id="col2" ref="stepExecuter" method="execute('endPoint3')"/>
<bean id="col3" ref="stepExecuter" method="execute('endPoint1C')"/>
<bean id="col4" ref="stepExecuter" method="execute('endPoint5')"/>
<bean id="col5" ref="stepExecuter" method="execute('endPoint6')"/>
<bean id="col6" ref="stepExecuter" method="execute('endPoint7')"/>
<bean id="col7" ref="stepExecuter" method="execute('endPoint8')"/>
<bean id="col8" ref="stepExecuter" method="execute('endPoint9')"/>
<bean id="col9" ref="stepExecuter" method="execute('endPoint10')"/>
<doCatch>
<exception>java.util.concurrent.TimeoutException</exception>
<exception>java.lang.Exception</exception>
<handled><constant>true</constant></handled>
<process ref="customExceptionProcessor"/>
<log loggingLevel="ERROR" message="msg=onException route=so_default handler=TimeoutException $simple{exception.stacktrace}"/>
</doCatch>
</doTry>
端点1A,1B,1C是具有收件人列表的路由。虽然上述步骤按顺序执行,但当它执行1A时,它将并行进行2个REST调用。从1A检索的数据进行交换并在1B中使用。 1B也是收件人列表,并且有4个并行呼叫到不同的端点。
每个步骤记录所需的时间。开始时间,结束时间。
其余所有步骤都是处理步骤,没有外部调用,例如排序和过滤。我注意到的是,在第8步之后偶尔会有很大的滞后,在第9步开始之前。差不多快800ms。步骤8只是排序步骤,日志显示它在0毫秒内完成。我不知道是什么原因导致了延迟。所有步骤都在主线程上执行。收件人列表具有自己的线程池。
任何方式我们都可以更深入地了解正在发生的事情吗?
Springboot-2.1.11。发布 Java-1.8 骆驼版本-2.25.0