routeContext里面的Camel路由无限执行

时间:2013-09-11 10:33:49

标签: apache-camel

我的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&amp;action=stop&amp;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&amp;action=stop&amp;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&amp;action=stop&amp;async=true"/>
</route>                        
</routeContext> 

任何人都可以提供帮助。 THKS

1 个答案:

答案 0 :(得分:0)

我遇到了类似的情况。但是在加载camel上下文时线程无限执行。尝试在点击端点后从交换头中删除CamelHttp *。