Apache Camel: puntos finales

Hemos aprendido cómo se ven los puntos finales en nuestro código de integración. Las expresiones que hemos utilizado hasta ahora comofile:/order, jms:orderQueue, direct:distributeOrderDSLson los puntos finales. Como puede ver, siguen los formatos de especificación de URI. Al evaluar este URI, elCamelContext crea el Endpointejemplo; no necesitas preocuparte por instanciarEndpoint implementación en su DSL.

Tomando nuestros ejemplos anteriores, especifica los puntos finales en Java DSL como aquí:

from ("file:/order").to("jms:orderQueue");

Y en primavera como aquí ...

<route>
   <from uri = "file:/order"/>
   <to uri = "jms:orderQueue"/>
</route>

En ambos casos, el punto final es una cadena constante. En ciertos casos, es posible que desee crear esta cadena en tiempo de ejecución. Puedes hacerlo usando JavaStringmétodos del formateador. Camel proporciona otro enfoque más simple para crear estas cadenas de URI en tiempo de ejecución. Para ello, Camel proporcionafromF y toFmétodos que aceptan los argumentos con los parámetros especificados por el usuario. La siguiente declaración ilustra el uso detoF método -

from("direct:distributeOrderDSL”).toF("file://%s?fileName=%s", path, name);

Debido a estos métodos, la necesidad de utilizar Java integrado String Se obvia los métodos del formateador.

Camel usa lenguaje simple de forma predeterminada para calcular la expresión del punto final. losSimple El lenguaje fue diseñado principalmente para evaluar Expressions y Predicatessin preocuparse mucho por las complejidades de XPath. Para evaluar predicados, puede combinar otro lenguaje comoxpath con el predeterminado Simpleidioma. Esto se hace usando el signo más para separar el otro idioma. El fragmento de código aquí muestra cómo concatenarxpath cadena a la expresión escrita en Simple.

from("direct:start")
.toD("jms:${orderQueue}+language:xpath:/order/@id");

En Spring, puedes lograr lo mismo que aquí -

<route>
   <from uri = "direct:start"/>
   <toD uri = "jms:${orderQueue}+language:xpath:/order/@id"/>
</route>

Puede concatenar tantos idiomas como desee, cada uno separado con un signo más del anterior. La lista de idiomas admitidos se puede encontrar aquí .