11

現在、JIRA の問題を引き起こす URL を呼び出すために HTTP メソッドを使用しています。

Apache Camel を使用したいのですが、どうすれば使用できますか?

Camel から次のリンクを呼び出す必要があります。

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

私は Camel を初めて使用するので、いくつかの解決策と例も提案してください。

ありがとう

4

4 に答える 4

9

Camel http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.htmlで動的にエンドポイントを使用することに関するこの FAQ も参照してください。

基本的に、これの EIP パターンは受信者リストです。

したがって、あなたの場合、1つのEIPとして単純化することもできます

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

Camel の http コンポーネントは完全に同期していることに注意してください。HTTP 経由で要求/応答を行い、応答メッセージを待っている間に呼び出し元がブロックされるのを避けたい場合は、次のような Camel の他の HTTP コンポーネントを使用できます。

  • ラクダ-ahc
  • キャメル-http4
  • キャメル桟橋
于 2012-04-16T13:12:36.007 に答える
8

CXFRSコンポーネントを簡単に使用できます。何らかの理由でHTTPコンポーネントを使用してそれを行う必要がある場合は、それも簡単に使用できます。

<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そしてもちろん、ルートのこの部分に到達する前に、ヘッダーでメッセージを充実させる必要があります。

于 2012-04-16T06:38:10.743 に答える
2

私は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にアクセスすると、エンドポイント direct:getOffers が呼び出されます

getOffers エンドポイントを定義する

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

     }

});

ここで別のサービスが 9008 で実行されており、残りのリソースは http://localhost:9008/api/v2.0/offersであり、これが消費しようとしているリソースです。

したがって、camel インスタンスが起動すると、両方のルートが登録され、上記のように処理が行われます

注: これを機能させるには、?bridgeEndpoint=true のオプションを追加することが重要です。

于 2016-08-25T14:35:32.047 に答える
0

.Apache CXFRS Componentcamel には、これに関する十分な情報があります。

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

于 2012-04-16T06:34:38.067 に答える