me gustaría obtener la siguiente clase de enrutamiento:Apache Camel: ¿puedo agregar varias declaraciones en la parte de cuándo de la declaración de elección condicional?
- mensaje HTTP POST con el cuerpo XML entra CAMEL
- almaceno algunos de los parámetros del cuerpo XML
- el mensaje se enruta a un externo punto final
- el criterio de valoración externa (servidor externo) responde
-> en este momento, me gustaría comprobar si la respuesta de la variable externa es un HTTP 20 0 Aceptar que contiene un parámetro XML igual a SUCCESS. -> si es así, me gustaría utilizar algunos de los parámetros almacenados para construir un nuevo mensaje HTTP (method = PUT esta vez) y enviarlo a un punto extremo externo
Problema que estoy teniendo actualmente, es el siguiente:
.choice()
.when(simple("${in.headers.CamelHttpResponseCode} == 200"))
// now I want do a few things, eg: check also the XML body via xpath
// and change the message to be sent out (change Method to PUT, ...)
.to("http://myserver.com")
.otherwise()
// if no 200 OK, I want the route to be stopped ... not sure how ?
.end()
Pregunta: alguna idea de cómo agregar esas declaraciones adicionales en caso de que el código de respuesta HTTP fuera 200 correcto? Parece que el cuándo no me permite agregar declaraciones adicionales ... (recibí un error en mi Eclipse IDE).
Gracias de antemano.
Nota: ¿podría ser que tengo que enrutar el mensaje en caso de que el 200 OK coincida con un 'nuevo punto final' y luego crear una nueva ruta con este nuevo punto final? Ej:
.choice()
.when(simple("${in.headers.CamelHttpResponseCode} == 200"))
.to("mynewendpoint")
.otherwise()
// if no 200 OK, I want the route to be stopped ... not sure how ?
.end();
from("mynewendpoint").
.setHeader(etc etc)
.to("http://myserver.com")
En este último caso, ¿cómo es exactamente que debe definir este 'newendpoint'?
¡Super! Gracias. – opstalj
Cualquier razón por la cual 'Predicate isOrm = PredicateBuilder.and (header (" hl7.msh.messageType "). IsEqualTo (" ORM "), header (" hl7.msh.triggerEvent "). IsEqualTo (" 001 "));' no funcionaria? ¿Algo sobre cómo y cuándo se evalúa? – Antares42
¿Hay alguna manera de usar este PredicateBuilder en un modelo? – Yannick