我的 Apache camel 项目开始有一个非常好的结构,但我遇到了困难,因为我在 routeContext 中的路由无限执行。我所有的路由都使用 SQL 组件,我希望我的所有路由只执行一次。
我发现,当我的 routeContext 中有两条路线时,两条路线只执行一次,但只要我添加第三条(无论第三条是什么路线),骆驼开始无限执行所有路线。我的所有路由都导致 sql 插入,因此多次运行相同的路由会导致重复键错误。
我认为这可能是我的一条路线中的错误,但我尝试过切换顺序等,每次我在 routeContext 中从两条路线切换到三条路线时,问题都会再次出现。今晚我还尝试将路线分开到不同的路线上下文中,但它没有改变任何东西。我还取出了所有错误处理程序以确保它与它们无关。
我开始认为这是 Camel 中 sql 组件的错误。大家的想法是什么?我应该切换到不同的组件(例如 jdbc)吗?
这是我的xml文件的样子......
骆驼语境
<import resource="camel-routes.xml"/>
<import resource="database.xml"/>
<camel:camelContext trace="true">
<camel:propertyPlaceholder location="classpath:sql.properties" id="placeholder"/>
<camel:routeContextRef ref="sourceToStaging"/>
</camel:camelContext>
骆驼路线
<routeContext id="sourceToStaging" xmlns="http://camel.apache.org/schema/spring">
<route id="processTypeOption-route">
<from uri="sourceSql:{{sql.selectTypeOption}}"/>
<transacted/>
<to uri="targetSql:{{sql.insertTypeOptionOrig}}"/>
<to uri="targetSql:{{sql.insertTypeOptionStg}}"/>
<to uri="controlbus:route?routeId=processTypeOption-route&action=stop&async=true"/>
</route>
<route id="processProductSize-route">
<from uri="sourceSql:{{sql.selectProductSize}}"/>
<transacted/>
<to uri="targetSql:{{sql.insertProductSizeOrig}}"/>
<to uri="targetSql:{{sql.insertProductSizeStg}}"/>
<to uri="controlbus:route?routeId=processProductSize-route&action=stop&async=true"/>
</route>
<route id="processStatus-route">
<from uri="sourceSql:{{sql.selectStatus}}"/>
<transacted/>
<to uri="targetSql:{{sql.insertStatusOrig}}"/>
<to uri="targetSql:{{sql.insertStatusStg}}"/>
<to uri="controlbus:route?routeId=processStatus-route&action=stop&async=true"/>
</route>
</routeContext>
任何人都可以请帮忙。谢谢