当前位置: 首页 > 知识库问答 >
问题:

路线内的骆驼路线上下文无限执行

巫马劲
2023-03-14

我的Apache骆驼项目开始有一个相当好的结构,但我陷入了困境,因为我的routeContext中的路由无限执行。我的所有路由都使用SQL组件,我希望所有路由只执行一次。

我发现,当我的routeContext中有两条路由时,两条路由都只执行一次,但是一旦我添加了第三条路由(不管第三条路由是什么),camel就开始无限执行所有路由。我所有的路由都导致sql插入,因此相同的路由运行多次会导致重复键错误。

我认为这可能是我的一条路线中的一个错误,但是我已经尝试改变etc的顺序,每次我在我的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> 

有人能帮忙吗?谢谢

共有1个答案

暴阳州
2023-03-14

我也有过类似的情况。但是线程在加载 Camel 上下文时无限执行。尝试在到达endpoint后从交换标头中删除 CamelHttp*。

 类似资料:
  • 我正在尝试使用多部分/表单数据将文件上传到骆驼路由。一切都很好,但是,我无法获得原始文件名。骆驼版本是:3.14.1 更新 使用对路由的以下修改进行更新。我设法处理二进制文件(获取文件名并存储它们)。但是,对于文本文件,该文件将附加边界页脚: 路线定义: 先谢谢你了 爱德华

  • 问题内容: 我一直在仔细研究Apache Camel文档,试图对它的两个 最基本 概念(端点和路由)有一个具体的了解,尽管这些术语在文档中各处都使用,但是我找不到真正定义它们的参考。是以及它们的用途。尽管它们的名称听起来很明显,而且我 想 我理解它们的含义,但是现在我已被分配到一项使我深深陷入Apache Camel Land的任务,而了解这些机制的绝对至关重要是。 我的猜测是,“端点”只是一个b

  • 我设置了一个endpoint,如下所示: 我用骆驼石英2.22.2和石英1.8.6 下面是从关闭到启动上下文的日志。

  • 问题内容: 我尝试对Apache骆驼路线进行junit测试。像这样的东西: 构建器类的定义如下 “ myExportRouteProcessor”类仅从JPA存储库中获取一些数据,并将结果放入路由。我想要的是在测试类中触发此路由,以检查整个过程是否正确完成。当前,处理器未启动。我该怎么办? 问题答案: 您可以使用AdviceWithRouteBuilder#replaceFromWith直接替换测

  • 我试着为阿帕奇骆驼路线做一个jUnit测试。类似于这样: builder类的定义如下 myExportRouteProcencer类只是从JPA存储库中获取一些数据,并将结果放入路由。我想要的是在测试类中触发此路由,以检查整个过程是否正确完成。目前,处理器没有被触发。我应该做些什么?

  • 我正试图在GAE上开始一条骆驼路线,但却撞上了一堵又一堵砖墙。首先,我尝试了如下路线: 但那什么都起不到作用。由于对Camel和GAE都是新手,我怀疑这是因为组件在路由开始时不充当使用者。然后我试着启动计时器: 却从GAE中得到了一个严重的错误: 错误:拒绝访问(java.lang.RuntimePermission modifyThreadGroup) 事实证明,您不能在GAE上创建新的实例,而