Условная маршрутизация Apache Camel

У меня есть служба, которая имеет две операции.

RegisterUser
UpdateUser

У меня верблюжий разгон:

<camel:route id="myRoute">
    <camel:from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&amp;synchronous=true" />            
    <camel:bean ref="processor" method="processMessage"/>
    <camel:to uri="xslt:file:resources/service/2.0.0/UserRegistration.xsl"/>
    <camel:to uri="cxf:bean:myTargetEndpoint"/>
</camel:route>

В моем bean-компоненте процессора, когда я указываю:

RegisterUser registerUser = exchange.getIn().getBody(RegisterUser.class);

Я получаю объект регистрации пользователя. Все работает нормально. Проблема в том, что я хочу, чтобы верблюд перенаправлял мой запрос условно, например,:

Если операция службы RegisterUser, я хочу направить сообщение в мой конкретный компонент, а если операция службы — UpdateUser, я хочу направить сообщение в другой компонент.

Я пытался использовать верблюжий xPath, но, похоже, он не работает.

<camel:route id="myRoute">
    <camel:from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&amp;synchronous=true" />  
    <camel:choice>
        <camel:when>
            <camel:xpath>
                //RegisterUser
            </camel:xpath>
            <camel:bean ref="processor" method="processMessage"/>
            <camel:to uri="xslt:file:resources/service/2.0.0/UserRegistration.xsl"/>
        </camel:when>
    </camel:choice>                        
    <camel:to uri="cxf:bean:myTargetEndpoint"/>
</camel:route>

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

10
задан Paulius Matulionis 27 July 2012 в 15:35
поделиться