2012-04-16 11 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を参照してください。だからあなたのケースでは、1つとして単純化することができ

EIP

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

キャメルのHTTPコンポーネントを気に完全に同期します。あなたがリクエストをしたい場合は/ HTTPを介して返信すると、返信メッセージを待っている間に、発信者のブロックを避ける、あなたのようなキャメルから他のHTTPコンポーネントの一部を使用することができます。

  • ラクダ-AHC
  • ラクダhttp4
  • ラクダ-桟橋私が使用しています
1

Apacheのラクダの桟橋

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

    } 

}); 

ので、ユーザーがhttp://localhost:9000/offersをヒットするとき、ここで、エンドポイントの直接:getOffersは今ここに別のサービスが http://localhost:9008/api/v2.0/offersと、この残りのリソースを持つ9008で実行されているgetOffersエンドポイントに

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

    } 

}); 

を定義

を呼び出されます私が消費しようとしているリソースです。ラクダのインスタンスは、それがルートの両方を登録開始時

ので、それは

上述したように処理のオプションを追加するために、その重要に注意しますか?bridgeEndpoint = trueこれが機能するには

関連する問題