Ich habe einen Dienst, der zwei Operationen hat.Apache Camel bedingten Routing
RegisterUser
UpdateUser
Ich habe ein Kamel Router:
<camel:route id="myRoute">
<camel:from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&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>
In meinem Prozessor Bohne, wenn ich angeben:
RegisterUser registerUser = exchange.getIn().getBody(RegisterUser.class);
ich das Register Benutzerobjekt. Alles funktioniert gut. Das Problem ist, dass ich Kamel meine Anfrage bedingt routen, zB für:
Wenn der Service-Operation RegisterUser
ist ich die Nachricht an meine speziellen Bohne routen und wenn der Service-Betrieb UpdateUser
ist, ich will die Nachricht zu routen zu der anderen Bohne.
Ich habe versucht, Kamel xPath zu verwenden, aber es scheint nicht zu funktionieren.
<camel:route id="myRoute">
<camel:from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&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>
Ich war auf der Suche, wie Kamel auf dem Weg zu den verschiedenen Zielen zu gründen, aber nichts finden sich nicht. Vielleicht weiß jemand, wo das Problem sein könnte?
Das funktioniert gut für mich. Genau das, was ich brauchte. Vielen Dank! :) –