2012-04-16 19 views
9

Şu anda bir JIRA sorunu oluşturacak bir URL'yi çağırmak için bir HTTP yöntemi kullanıyorum.Apache Camel aracılığıyla RESTful bir hizmeti nasıl çağırırım?

Şimdi Apache Camel'i kullanmak istiyorum, bunu nasıl kullanabilirim?

Ben Camel aracılığıyla aşağıdaki linki çağırmak gerekir: Ben Camel yeniyim olarak

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

de bazı çözümler ve örnekler önerilerde bulunun.

Teşekkür

cevap

7

Kolayca CXFRS Component kullanabilirsiniz;

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

Ve tabii eğer bu rota kısmına almadan önce myKey başlığıyla mesajınızı zenginleştirmek gerekir: Eğer bazı nedenlerden dolayı HTTP Component kullanarak bunu yapmak gerekirse kolayca de o kullanabilirsiniz.

+0

Basit HTTP isteği yapmak için CXFRS nasıl kullanılabilir? – Phil

8

Esasen bunun için EIP desen alıcı listesi de http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html

Camel sonlandırıcılardan dinamik kullanma hakkında bu SSS bölümüne bakın.

Yani sizin durumda da Camel http bileşeni tamamen senkron olan bir EIP

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

Aklın olarak basitleştirilmiş olabilir. İsteği yapmak istiyorsanız/HTTP üzerinden cevap ve cevap mesajı beklerken, o zaman gibi Camel diğer HTTP bileşenlerinin bazılarını kullanabilirsiniz ederken arayanın bloğu zorunda kalmamak:

  • deve-AHC
  • deve-http4
  • deve-dalgakıran kullanıyorum
1

apache deve dalgakıran

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

    } 

}); 

yüzden http://localhost:9008/api/v2.0/offers ve bunun bir dinlenme kaynak olan 9008 de getOffers

şimdi getOffers bitiş noktasını İşte

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

    } 

}); 

başka hizmeti çalışıyor tanımlayan

çağrılan alacak: Burada kullanıcı uç nokta direkt ardından http://localhost:9000/offers vuracaktır zaman tüketmeye çalıştığım kaynaktır.

yüzden deve örneği buna

yukarıda açıklandığı gibi işlem seçeneği eklemek Onun önemli Not gelmez sonra iki güzergah kaydeder başladığında?bridgeEndpoint = bu iş için true

İlgili konular