否则停止路线

时间:2011-07-26 13:00:53

标签: apache-camel

你有这样的路线

<route id="route1">
<from uri="activemq:queuer1"/>
    <choice>
        <when>
            <simple>${header.urn} regex '^user*'</simple>
            <to uri="xslt:classpath:/xslt/rdf/user.xsl"/>
        </when>
        <when>
            <simple>${header.urn} regex '^userdata:.*'</simple>
            <to uri="xslt:classpath:/xslt/rdf/userdata.xsl"/>
        </when>
        ....
        <otherwise>
            <setHeader headerName="errorMsg ">
                <constant>no xsl file for this type</constant>
            </setHeader>
            <to uri="activemq:error"/>
        </otherwise> 
    </choice>
    <process ref="importer"/>
</route>

现在,如果路由进入其他部分,则不应处理该消息。 如果消息进入其他方式,我可以以某种方式停止路线吗?

可能性是我在所有部件中添加过程部件并在最后删除它。 但是我们已经有几个部分和更多部分来了。

首选其他解决方案。

1 个答案:

答案 0 :(得分:21)

您可以添加<stop/>以停止继续路由邮件。

在Java代码中:

exchange.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE);

在Java DSL中:

.when(simple("${in.header.CamelHttpResponseCode} == 404"))
    .stop()
.otherwise()
    ...