остановить маршрут в противном случае - PullRequest
7 голосов
/ 26 июля 2011

Привет, есть такой маршрут

<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>

Теперь, если маршрут идет в другую часть, сообщение не должно быть обработано.Могу ли я как-то остановить маршрут, если сообщение переходит в противном случае?

Возможно ли добавить часть процесса во все части when и удалить ее в конце.Но у нас уже есть несколько, когда запчасти и многое другое.

Другое решение будет предпочтительным.

1 Ответ

22 голосов
/ 26 июля 2011

Вы можете добавить <stop/>, чтобы остановить дальнейшую маршрутизацию сообщения.

В коде Java:

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

В Java DSL:

.when(simple("${in.header.CamelHttpResponseCode} == 404"))
    .stop()
.otherwise()
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...