我的Apache camel项目开始有一个相当不错的结构但是我被卡住了因为我的routeContext中的路由无限执行。我的所有路由都使用SQL组件,我希望所有路由只执行一次。
我发现当我在routeContext中有两条路由时,两条路由只执行一次,但只要我添加第三条路径(无论第三条是什么路由),camel就会无限地执行所有路由。我的所有路由都会导致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>
任何人都可以提供帮助。 THKS
答案 0 :(得分:0)
我遇到了类似的情况。但是在加载camel上下文时线程无限执行。尝试在点击端点后从交换头中删除CamelHttp *。