Apache Camel: puis-je mettre plusieurs instructions dans le cas où une partie de la condition instruction de choix?
Je voudrais obtenir de la sorte de routage:
- HTTP POST message XML corps entre CHAMEAU
- - Je stocker des paramètres du corps XML
- Le message est routé vers un point de terminaison externe
- Le point de terminaison externe (serveur externe) les réponses
-> en ce moment, je voudrais vérifier si la réponse à partir du point de terminaison externe est un HTTP 200 OK contenant un paramètre XML égal SUCCÈS.
-> si oui, alors je voudrais utiliser certains des paramètres enregistrés pour la construction d'un nouveau message HTTP (method = METTRE cette fois) et de l'envoyer à un point de terminaison externe
Problème que je rencontre actuellement est le suivant:
.choice()
.when(simple("${in.headers.CamelHttpResponseCode} == 200"))
//now I want do a few things, eg: check also the XML body via xpath
//and change the message to be sent out (change Method to PUT, ...)
.to("http://myserver.com")
.otherwise()
//if no 200 OK, I want the route to be stopped ... not sure how ?
.end()
Question: aucune idée comment faire pour ajouter ces déclarations dans le cas où le code de réponse HTTP 200 OK ? On dirait le moment ne me permet pas d'ajouter des déclarations ...
(J'ai une erreur dans mon Eclipse IDE).
Merci d'avance.
Remarque: se pourrait-il que j'ai pour acheminer le message dans le cas où l'200 OK correspond à un "nouveau point de terminaison" puis créer un nouveau à partir de la route avec ce nouveau point de terminaison ?
Par exemple:
.choice()
.when(simple("${in.headers.CamelHttpResponseCode} == 200"))
.to("mynewendpoint")
.otherwise()
//if no 200 OK, I want the route to be stopped ... not sure how ?
.end();
from("mynewendpoint").
.setHeader(etc etc)
.to("http://myserver.com")
Dans ce dernier cas, exactement comment dois-je définir cette "newendpoint' ?
OriginalL'auteur opstalj | 2012-02-10
Vous devez vous connecter pour publier un commentaire.
Dans le langage de programmation DSLs tels que Java, vous pouvez construire des prédicats ensemble. J'ai posté une entrée de blog il y a quelques années à ce sujet: http://davsclaus.blogspot.com/2009/02/apache-camel-and-using-compound.html
Par exemple d'avoir deux prédicats
Vous pouvez la chaîne d'ensemble, à l'aide de et ou ou.
Et puis vous pouvez utiliser isOrm dans la route
Aucune raison de s'en
Predicate isOrm = PredicateBuilder.and( header("hl7.msh.messageType").isEqualTo("ORM") , header("hl7.msh.triggerEvent").isEqualTo("001") );
ne marcherait pas? Quelque chose au sujet de comment et quand il est évalué?Est-il possible d'utiliser cette PredicateBuilder dans un plan d'action?
Pas de son que Java
OriginalL'auteur Claus Ibsen
yep, vous pouvez avoir plusieurs états entre le .lorsque() et .dans le cas contraire() et vous pouvez toujours faire appel .endChoice() explicitement à la fin de chaque bloc conditionnel...
à votre autre question, vous pouvez utiliser chameau-direct pour enchaîner de multiples voies, etc...
OriginalL'auteur Ben ODay