J'utilise actuellement une méthode HTTP pour appeler une URL qui créera un problème JIRA.
Maintenant, je veux utiliser Apache Camel, comment puis-je l'utiliser?
J'ai besoin d'invoquer le lien suivant via Camel:
http://localhost:8080/rest/api/2/project/" + key + /components
Comme je suis nouveau chez Camel, veuillez suggérer des solutions et des exemples.
Merci
Vous pouvez facilement utiliser le Composant CXFRS ; si vous avez besoin de le faire en utilisant le Composant HTTP pour une raison quelconque, vous pouvez facilement l'utiliser aussi:
<setHeader headerName="CamelHttpUri">
<simple>http://localhost:8080/rest/api/2/project/${header.myKey}/components</simple>
</setHeader>
<inOut uri="http://doesnt.matter.we/override/it/anyways" />
Et bien sûr, vous devrez enrichir votre message avec l'en-tête myKey
avant d'accéder à cette partie de l'itinéraire.
Voir aussi cette FAQ sur l'utilisation de Dynamic to endpoints dans Camel http://camel.Apache.org/how-do-i-use-dynamic-uri-in-to.html
Le modèle EIP utilisé est la liste des destinataires.
Donc, dans votre cas, cela pourrait aussi être simplifié en un EIP
<recipientList>
<simple>http://localhost:8080/rest/api/2/project/${header.myKey}/components</simple>
</recipientList>
Remarquez que le composant http de Camel est entièrement synchrone. Si vous souhaitez demander/répondre via HTTP et éviter que l'appelant ne se bloque pendant l'attente du message de réponse, vous pouvez utiliser certains des autres composants HTTP de Camel, tels que:
J'utilise Apache Camel Jetty
CamelContext context = new DefaultCamelContext();
public void configure(){
context.addRoutes(new RouteBuilder(){
from("jetty:localhost:9000/offers")
.to("direct:getOffers")
.end();
}
});
alors voici quand l'utilisateur va frapper http: // localhost: 9000/offers alors le noeud final direct: getOffers sera invoqué
alors maintenant, définir le point final getOffers
context.addRoutes(new RouteBuilder(){
public void configure(){
from("direct:getOffers")
.to("jetty:http://localhost:9008/api/v2.0/offers?
bridgeEndpoint=true")
.end();
}
});
Ici, un autre service fonctionne à 9008 avec une ressource de repos de http: // localhost: 9008/api/v2.0/offers et c’est la ressource que j’essaie de consommer.
donc, quand l'instance de chameau commence, il enregistre les deux routes, puis il effectue le traitement décrit ci-dessus
Note Il est important d'ajouter l'option de? BridgeEndpoint = true pour que cela fonctionne
Vous pouvez utiliser le service REST de Camel à l'aide de CXFRS Component
. Apache camel dispose de suffisamment d'informations à ce sujet.