Apache Camel routage conditionnel

J'ai un service qui a deux opérations.

RegisterUser
UpdateUser

J'ai un chameau déroute:

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

Dans mon processeur bean, alors que j'ai spécifié:

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

- Je obtenir le registre de l'utilisateur de l'objet. Tout fonctionne très bien.
Le problème est que je veux chameau de route de ma demande, sous certaines conditions, pour l'e.g:

Si l'opération de service est RegisterUser je veux router le message vers mon haricot et si l'opération de service est UpdateUser je veux router le message vers l'autre bean.

J'ai essayé d'utiliser le chameau xPath, mais il ne semble être au travail.

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

Je cherchais comment mettre en place chameau de route pour les différentes cibles, mais n'a pas trouvé quoi que ce soit. Peut-être que quelqu'un sait d'où pourrait être le problème?

OriginalL'auteur Paulius Matulionis | 2012-07-27