2012-04-16 27 views
9

Actualmente estoy usando un método HTTP para invocar un URL que creará un problema JIRA.¿Cómo puedo invocar un servicio RESTful a través de Apache Camel?

Ahora quiero usar Apache Camel, ¿cómo puedo usar eso?

I necesidad de invocar el siguiente enlace a través de camello:

http://localhost:8080/rest/api/2/project/" + key + /components 

Como soy nuevo en camello, por favor sugerir algunas soluciones y ejemplos también.

Gracias

Respuesta

7

Desde aquí se puede utilizar el CXFRS Component; si es necesario hacerlo mediante el HTTP Component por alguna razón usted podría utilizar fácilmente que así:

<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" /> 

Y, por supuesto, tendrá que enriquecer su mensaje con el encabezamiento myKey antes de llegar a esta parte de la ruta.

+0

¿Cómo se puede usar CXFRS para hacer una solicitud HTTP simple? – Phil

8

Ver también este FAQ sobre el uso dinámico para puntos finales en camello http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

En esencia, el patrón de EIP de esto es la lista de destinatarios.

Así que en su caso podría también ser simplificado como una EIP

<recipientList> 
    <simple>http://localhost:8080/rest/api/2/project/${header.myKey}/components</simple> 
</recipientList> 

mente el componente http en camello es totalmente síncrona. Si usted quiere hacer de solicitud/respuesta a través de HTTP y evitar que el bloque de llamadas mientras se espera el mensaje de respuesta, entonces usted puede utilizar algunos de los otros componentes de HTTP de camello, tales como:

  • camello-AHC
  • camello http4
  • camello embarcadero
1

estoy usando Apache embarcadero camello

CamelContext context = new DefaultCamelContext(); 
    public void configure(){ 
      context.addRoutes(new RouteBuilder(){ 
      from("jetty:localhost:9000/offers") 
      .to("direct:getOffers") 
      .end(); 

    } 

}); 

por lo aquí cuando el usuario llegará a http://localhost:9000/offers continuación, los puntos finales directas: getOffers conseguirán invocado

por lo que ahora la definición del punto

context.addRoutes(new RouteBuilder(){ 
    public void configure(){ 
      from("direct:getOffers") 
      .to("jetty:http://localhost:9008/api/v2.0/offers? 
      bridgeEndpoint=true") 
     .end(); 

    } 

}); 

Aquí otro servicio se está ejecutando getOffers final en 9008 que tiene un recurso resto de http://localhost:9008/api/v2.0/offers y esto es el recurso que estoy tratando de consumir

así que cuando comienza ejemplo camello se registra tanto en las rutas a continuación, se hace el procesamiento como se describe anteriormente

Nota Es importante añadir la opción de?bridgeEndpoint = true para que esto funcione

Cuestiones relacionadas