我有一条骆驼路线,看起来像下面的路线。如果所有记录都成功解析,那么我将从onCompletion步骤中收到一封电子邮件。如果一条记录发生异常,则将处理其余的记录,这很好,但是不会触发onCompletion步骤。

我想要的是即使有错误也可以运行onCompletion步骤,并能够发送一条消息,指出“路线已完成,但有错误”。我怎样才能做到这一点?

        <route id="route1">
            <from uri="file://C:/TEMP/load?noop=true&amp;idempotentRepository=#sysoutStore&amp;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&amp;[email protected]&amp;[email protected]&amp;subject=we're done" />
              </onCompletion>
        </route>

最佳答案

路由的最佳部分是,您的路由中包含onException,其值为handler = true。因此,将您的onCompletion移到父route(route1),应该可以!

关于java - Apache Camel路由:发生异常时未达到onCompletion吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38462789/

10-11 03:47