Apache Camel - Points de terminaison

Nous avons appris à quoi ressemblent les points de terminaison dans notre code d'intégration. Les expressions que nous avons utilisées jusqu'à présent telles quefile:/order, jms:orderQueue, direct:distributeOrderDSLsont les points de terminaison. Comme vous le voyez, ils suivent les formats de spécification URI. Lors de l'évaluation de cet URI, leCamelContext crée le Endpointexemple; vous n'avez pas à vous soucier de l'instanciationEndpoint mise en œuvre dans votre DSL.

En prenant nos exemples précédents, vous spécifiez les points de terminaison dans Java DSL comme ici -

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

Et au printemps comme ici -

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

Dans les deux cas, le point de terminaison est une chaîne constante. Dans certains cas, vous souhaiterez peut-être créer cette chaîne lors de l'exécution. Vous pouvez le faire en utilisant JavaStringméthodes de mise en forme. Camel fournit une autre approche plus simple pour créer ces chaînes URI lors de l'exécution. A cet effet, Camel fournitfromF et toFméthodes qui acceptent les arguments avec les paramètres spécifiés par l'utilisateur. La déclaration suivante illustre l'utilisation detoF méthode -

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

En raison de ces méthodes, la nécessité d'utiliser le Java intégré String les méthodes de mise en forme sont évitées.

Camel utilise le langage Simple par défaut pour calculer l'expression du point de terminaison. leSimple la langue a été conçue principalement pour évaluer Expressions et Predicatessans trop se soucier des subtilités de XPath. Pour évaluer les prédicats, vous pouvez combiner un autre langage tel quexpath avec la valeur par défaut SimpleLangue. Cela se fait en utilisant le signe plus pour séparer l'autre langue. L'extrait de code ici montre comment concaténerxpath chaîne à l'expression écrite dans Simple.

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

Dans Spring, vous pouvez réaliser la même chose qu'ici -

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

Vous pouvez concaténer autant de langues que vous le souhaitez, chacune séparée par un signe plus de la précédente. La liste des langues prises en charge peut être trouvée ici .