2012-04-16 14 views
9

Obecnie używam metody HTTP do wywoływania adresu URL, który utworzy problem JIRA.Jak mogę wywołać usługę RESTful za pośrednictwem Apache Camel?

Teraz chcę użyć Apache Camel, jak mogę tego użyć?

muszę wywołać poniższy link przez Camel:

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

Ponieważ jestem nowy na wielbłądzie, proszę sugerować pewne rozwiązania i przykłady zbyt.

Dzięki

Odpowiedz

7

Można łatwo używać CXFRS Component; jeśli trzeba to zrobić za pomocą HTTP Component z jakiegoś powodu można łatwo używać, a także:

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

I oczywiście trzeba będzie wzbogacić swoje wiadomości z nagłówka myKey przed wejściem do tej części trasy.

+0

W jaki sposób CXFRS może być użyty do wykonania prostego żądania HTTP? – Phil

8

Zobacz także tego FAQ na temat korzystania dynamiczny do punktów końcowych w Camel http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

Zasadniczo wzór EIP za to listy odbiorców.

Więc w twoim przypadku może to być również uproszczone jako jeden EIP

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

Umysłu składnik http w Camel jest w pełni synchroniczny. Jeśli chcesz zrobić żądanie/odpowiedź za pośrednictwem protokołu HTTP i uniknąć blok rozmówcy czekając na wiadomości zwrotnej, można korzystać z niektórych innych składników HTTP z Camel, takie jak:

  • wielbłądziej AHC
  • wielbłądziej http4
  • wielbłądziej pomost
1

Używam apache camel pomost

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

    } 

}); 

tak tu, gdy użytkownik trafi http://localhost:9000/offers następnie punkt końcowy bezpośrednie: getOffers będzie się powoływać

więc teraz definiowanie punktu getOffers końcowy

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

    } 

}); 

Oto kolejna usługa jest uruchomiona w 9008 o odpoczynku zasób http://localhost:9008/api/v2.0/offers i to jest zasobem, który próbuję skonsumować.

więc gdy instancja wielbłąd zaczyna rejestruje obie trasy to sposób przetwarzania, jak opisano powyżej

Uwaga Ważne, aby dodać opcję?bridgeEndpoint = true, aby to zadziałało

Powiązane problemy