У меня есть проект с Camel, и у моего маршрута есть рекурсивный вызов, чтобы реализовать logi c «вызов хранимой процедуры, когда он возвращает набор данных»:
<route id="trxnReader">
<from uri="direct:query"/>
<to uri="sql-stored:classpath:sql/getTrxnsProcedure.sql?dataSource=myDataSource"
id="storedprocGetTrxns"/>
<choice>
<when>
<simple>${body} != null</simple>
<split>
<simple>${body.transactions}</simple>
<filter>
<method ref="trnxFilter" method="filter"/>
<to uri="direct:processTrxn"/>
</filter>
</split>
<to uri="direct:query"/>
</when>
<otherwise>
<log id="failUploadInfo" message="Transactions don't exist" loggingLevel="INFO"/>
</otherwise>
</choice>
</route>
Проблема с этот код состоит в том, что если моя хранимая процедура постоянно возвращает что-то в течение длительного времени, не позволяя выйти из рекурсии, я получаю java.lang.StackOverflowError
. Мне нужно что-то вроде l oop. Как лучше всего реализовать такие логи c с Camel? Я использую Camel 2.15.3.