У меня есть приложение 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, 1 C - маршруты с списками получателей. В то время как вышеупомянутые шаги выполняются последовательно, когда он выполняет 1A, он делает 2 вызова REST параллельно. данные, полученные из 1А, поступают в обмен и используются в 1В. 1B также является списком получателей, и существует 4 параллельных вызова к различным конечным точкам.
Каждый шаг записывает, сколько времени это занимает. Время начала, время окончания.
Остальные все шаги являются шагами обработки без внешних вызовов, таких как сортировка и фильтрация. Иногда я замечаю, что после 8-го шага перед началом 9-го шага наблюдается огромное отставание. Как почти 800 мс. Шаг 8 - просто шаг сортировки, и журнал показывает, что это сделано за 0 мс. Я не могу понять, что вызывает отставание. Все шаги выполняются в главном потоке. список получателей имеет собственный пул потоков.
Как можно глубже понять, что происходит?
Springboot - 2.1.11.RELEASE Java - 1.8 Camel Version - 2,25,0