example camel and spring apache-camel

and - camel spring boot xml rest



Apache Camel: cómo almacenar la variable para su uso posterior (2)

Mientras "jugaba" con Camel usando Spring DSL, encontré el siguiente problema. Supongamos que el flujo de mensajes esperado es así:

  1. el cliente envía un mensaje HTTP POST con cuerpo XML a CAMEL
  2. Los mensajes de POST HTTP de CAMEL se dirigen al servidor, con el URI ligeramente adaptado usando la información del cuerpo XML recibido (por ejemplo: use XPATH para filtrar un determinado parámetro)
  3. Después de que CAMEL haya recibido una respuesta, CAMEL envía un mensaje HTTP PUT al servidor, utilizando los parámetros del cuerpo XML recibido en 1

Así que algo como:

<route> <from uri="..."> <to uri="..."> <to uri="..."> </route>

Pregunta: ¿Cómo almaceno los parámetros en Spring DSL en el paso 1, para poder usarlos más adelante en el paso 3?

Por lo tanto, me gustaría extraer los parámetros XML del cuerpo XML del mensaje recibido en el paso 1 y colocarlos en variables, que luego puedo usar para redactar el mensaje que se enviará en el paso 3.

Para extraer los parámetros, estaba pensando en usar XPATH. Se ve bien, pero no veo cómo colocar la salida del XPATH en una variable y luego usar esa variable más adelante ... (¿sintaxis?)

Nota: como puede ver, mi conocimiento del desarrollo es bastante limitado ... perdón por eso. Pero aún sería genial si alguien pudiera ayudar con esto :).


Os dejo algunos ejemplos:

<setHeader headerName="token"> <constant>someValue</constant> </setHeader> <setHeader headerName="userName"> <simple>${properties:userName}</simple> //from config </setHeader> <setProperty propertyName="bodyBkp"> <simple>${in.body}</simple> </setProperty> <setProperty propertyName="orderNumber"> <xpath resultType="String">//item[1]/orderNumber/text()</xpath> </setProperty>

Adquiridor

${exchangeProperty[orderNumber]} ${in.headers.token}

Documentación

Compruebe el lenguaje de expresión simple: http://camel.apache.org/simple.html

A veces, mirar los casos de prueba de Camel también puede ser útil, en particular para Spring DSL:


puede configurar los datos de la tienda en las propiedades de Exchange o en los encabezados de mensajes como este ...

.setHeader("ID", XPathBuilder.xpath("/order/@id", String.class)) .setProperty("ID", XPathBuilder.xpath("/order/@id", String.class))

y luego recuperarlos en un bean / procesador de Exchange como este ...

String propId = (String) exchange.getProperty("ID"); String headerId = (String) exchange.getIn().getHeader("ID"); }