骆驼线处于异常等待状态

时间:2020-04-19 18:58:32

标签: java spring-boot apache-camel

我有一个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

0 个答案:

没有答案