en "jouant" avec Camel en utilisant Spring DSL, je suis tombé sur le problème suivant. Supposons que le flux de messages attendu ressemble à ceci:
Donc quelque chose comme:
<route>
<from uri="...">
<to uri="...">
<to uri="...">
</route>
Question: comment stocker les paramètres dans Spring DSL à l'étape 1, afin de pouvoir les utiliser plus tard à l'étape 3?
Donc, je voudrais extraire les paramètres XML du corps XML du message reçu à l'étape 1 et les mettre dans des variables, que je pourrai ensuite utiliser pour composer le message à envoyer à l'étape 3.
Pour extraire les paramètres, je pensais utiliser XPATH. Cela semble correct, mais je ne vois tout simplement pas comment mettre la sortie de XPATH dans une variable puis utiliser cette variable plus tard ... (syntaxe ??)
Remarque: comme vous pouvez le voir, mes connaissances en développement sont plutôt limitées ... désolé pour cela. Mais ce serait toujours formidable si quelqu'un pouvait aider avec ça :).
vous pouvez définir les données de stockage dans les propriétés Exchange ou les en-têtes de message comme celui-ci ...
.setHeader("ID", XPathBuilder.xpath("/order/@id", String.class))
.setProperty("ID", XPathBuilder.xpath("/order/@id", String.class))
puis récupérez-les dans un bean/processeur de la Bourse comme ceci ...
String propId = (String) exchange.getProperty("ID");
String headerId = (String) exchange.getIn().getHeader("ID"); }
Je vous laisse quelques exemples:
<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>
Getter
${exchangeProperty[orderNumber]}
${in.headers.token}
Documentation
Vérifiez le langage d'expression simple: http://camel.Apache.org/simple.html
Parfois, regarder les cas de test de Camel peut également être utile, en particulier pour Spring DSL: