你有这样的路线
<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>
现在,如果路由进入其他部分,则不应处理该消息。 如果消息进入其他方式,我可以以某种方式停止路线吗?
可能性是我在所有部件中添加过程部件并在最后删除它。 但是我们已经有几个部分和更多部分来了。
首选其他解决方案。
答案 0 :(得分:21)
您可以添加<stop/>
以停止继续路由邮件。
在Java代码中:
exchange.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE);
在Java DSL中:
.when(simple("${in.header.CamelHttpResponseCode} == 404"))
.stop()
.otherwise()
...