Routing warunkowy Apache Camel
Mam usługę, która ma dwie operacje.
RegisterUser
UpdateUser
Mam trasę na wielbłądach:
<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>
W moim komponencie procesora, gdy określam:
RegisterUser registerUser = exchange.getIn().getBody(RegisterUser.class);
Dostaję obiekt użytkownika rejestru. Wszystko dziala. Problem polega na tym, że chcę, aby wielbłąd kierował moją prośbę warunkowo, na przykład:
Jeśli operacja jestRegisterUser
Chcę skierować wiadomość do mojego określonego komponentu bean i jeśli operacja jestUpdateUser
Chcę skierować wiadomość do innego komponentu bean.
Próbowałem użyć camel xPath, ale nie działa.
<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>
Szukałem, jak ustawić wielbłąda, aby dotrzeć do różnych celów, ale nic nie znalazłem. Może ktoś wie, gdzie może być problem?