2012-04-16 5 views
9

현재 JIRA 문제를 일으키는 URL을 호출하는 데 HTTP 메소드를 사용하고 있습니다.Apache Camel을 통해 RESTful 서비스를 호출하려면 어떻게해야합니까?

이제 Apache Camel을 사용하고 싶습니다. 어떻게 사용할 수 있습니까?

나는 낙타를 통해 다음과 같은 링크를 호출 할 필요가 : 나는 낙타에 새로 온 사람으로

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

너무 몇 가지 솔루션 및 사례를 제시하시기 바랍니다.

감사

답변

7

당신은 쉽게 CXFRS Component 사용할 수 있습니다;

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

을 물론 당신은 경로의이 부분에 도착하기 전에 myKey 헤더와 메시지를 풍부하게해야합니다 : 당신이 어떤 이유로 HTTP Component를 사용하여 그것을 할 필요가 있다면 당신은 쉽게 그뿐만 아니라 사용할 수 있습니다.

+0

CXFRS를 사용하여 간단한 HTTP 요청을 수행하는 방법은 무엇입니까? – Phil

0

당신은 CXFRS Component .Apache 낙타를 사용하여 낙타에서 REST 서비스를 소비 할 수는 이것에 대해 충분한 정보를 가지고있다.

http://camel.apache.org/cxfrs.html

8

은 기본적으로 이것에 대한 EIP 패턴이 수신자 목록은 또한 http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

낙타 에서 엔드 포인트에 동적 사용에 대한 FAQ를 참조하십시오.

그래서 귀하의 경우에 그것은 또한 낙타의 HTTP 구성 요소가 완전히 동기 하나 EIP

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

마음으로 단순화 할 수있다. 당신이 요청을하려면/HTTP를 통해 회신 응답 메시지를 기다리는 것은, 다음과 같은 낙타에서 다른 HTTP 구성 요소의 일부를 사용할 수 있지만 발신자 블록을 피하기 :

  • 낙타 AHC
  • 낙타 http4
  • 낙타 부두 내가 사용하고
1

아파치 낙타 부두

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

    } 

}); 

그래서 http://localhost:9008/api/v2.0/offers이의 나머지 자원을 가지고 9008에서 getOffers

그래서 지금 getOffers 종점 여기

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

    } 

}); 

다른 서비스가 실행되고 정의

를 호출 얻을 것이다 : 여기에 사용자가 엔드 포인트의 직접 다음 http://localhost:9000/offers을 칠 때 내가 소비하려고하는 자원입니다.

그래서 낙타 인스턴스는 그것이

전술 한 바와 같이, 처리의 옵션을 추가 그것의 중요한 참고 않는 다음 두 경로를 등록 시작할 때?bridgeEndpoint = true 일을하려면

관련 문제