現在、JIRA の問題を引き起こす URL を呼び出すために HTTP メソッドを使用しています。
Apache Camel を使用したいのですが、どうすれば使用できますか?
Camel から次のリンクを呼び出す必要があります。
http://localhost:8080/rest/api/2/project/" + key + /components
私は Camel を初めて使用するので、いくつかの解決策と例も提案してください。
ありがとう
現在、JIRA の問題を引き起こす URL を呼び出すために HTTP メソッドを使用しています。
Apache Camel を使用したいのですが、どうすれば使用できますか?
Camel から次のリンクを呼び出す必要があります。
http://localhost:8080/rest/api/2/project/" + key + /components
私は Camel を初めて使用するので、いくつかの解決策と例も提案してください。
ありがとう
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 コンポーネントを使用できます。
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
そしてもちろん、ルートのこの部分に到達する前に、ヘッダーでメッセージを充実させる必要があります。
私は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 のオプションを追加することが重要です。
.Apache CXFRS Component
camel には、これに関する十分な情報があります。