我有一个类似下面的Camel路线。如果所有记录都成功解析,那么我会从onCompletion步骤收到一封电子邮件。如果一条记录获得异常,则其余记录将处理,这很好,但是onCompletion步骤不会触发。
我想要的是即使有错误也要运行onCompletion步骤,并且能够发送一条消息“路由已完成但有错误”。我怎么能这样做?
<route id="route1">
<from uri="file://C:/TEMP/load?noop=true&idempotentRepository=#sysoutStore&sorter=#externalDataFilesSorter"/>
<choice>
<when>
<simple>${file:name} regex '*file.*.(txt)'</simple>
<to uri="direct:RouteFile" />
</when>
</choice>
</route>
<route id="testRouteDirect">
<from uri="direct:RouteFile" />
<onException>
<exception>java.lang.IllegalArgumentException</exception>
<redeliveryPolicy maximumRedeliveries="1" />
<handled>
<constant>true</constant>
</handled>
<to uri="log:java.lang.IllegalArgumentException"></to>
</onException>
<onException>
<exception>java.text.ParseException</exception>
<redeliveryPolicy maximumRedeliveries="1" />
<handled>
<constant>true</constant>
</handled>
<to uri="log:java.text.ParseException"></to>
</onException>
<split parallelProcessing="false" strategyRef="exchangePropertiesAggregatorStrategy" >
<tokenize token="\r\n"/>
<to uri="log:Record"></to>
</split>
<onCompletion>
<to uri="log:completion"></to>
<to uri="smtp://mail.com?contentType=text/html&to=done@test.com&from=route@test.com&subject=we're done" />
</onCompletion>
</route>
答案 0 :(得分:1)
您的路线中最好的部分是,您的路线中的onException with handling = true。所以将你的onCompletion移动到父路由(route1),它应该工作!
答案 1 :(得分:0)
在骆驼网站上有一堆与oncompletion相关的门票:Camel Jira URL。我升级到更新版本的驼峰&amp;我不再理解这个问题了。