Chameau de Passage de paramètres spécifiques à partir d'itinéraires pour un générique de méthode d'haricot
Disons que j'ai un Chameau route qui ressemble à ceci :
from("direct:myRoute")
.setHeader("someHeader", simple("some header value"))
.beanRef("myBean", "beanMethod");
Et j'ai un haricot que je cannot change
qui ressemble à ceci :
public class MyBean {
public void beanMethod(String headerExpected) {
//do something with the value here.
}
}
Fondamentalement, je veux passer la valeur de someHeader de myRoute à beanMethod dans MyBean.
Sachant que beanMethod peut accepter une String
, comment puis-je passer la valeur de l'en-tête someHeader de la route, de sorte qu'il est accepté comme une Chaîne de caractères au sein de beanMethod?
OriginalL'auteur abbasdgr8 | 2014-05-28
Vous devez vous connecter pour publier un commentaire.
Vous pouvez passer des paramètres dans la façon dont vous avez décrit comme ceci:
Plus d'informations, y compris d'autres méthodes du bean de liaison peuvent être trouvés ici http://camel.apache.org/bean-binding.html
setHeader("anotherHeader", simple("bean:myBean?method=beanMethod(${header.someHeader})"))
le retour de la méthode est de type void, donc il n'y aura pas de sortie de la fève. Si vous deviez changer son type de retour de
String
par exemple, puis après l'appel de la.to(..
bean appeler les messages du corps sera la sortie de l'appel de méthode. alors vous seriez en mesure de fairesetHeader("anotherHeader",simple("${body}"))
Cheers Mathew!!
La peine de mentionner que cette solution fonctionne également avec des propriétés
.to("bean:myBean?method=beanMethod(${property.propKey})"
. (testé sur Chameau 2.10)vous pouvez également utiliser
.setHeader("anotherHeader", method(MyBean.class))
. Ce qui fera appel à la méthode dansMyBean
(vous pouvez spécifier la méthode si vous voulez) et de définir la valeur d'en-tête; il ne modifiera pas l'Échange de corps.OriginalL'auteur Matthew Wilson