3

次のようにキャメルでコンテンツエンリッチャーパターンを実装したい:

from("direct:x").enrich(dynamicUri,new MyAggregatorStrategy()).to("direct:y")

direct:x動的 uri は、チャネルから送信される各メッセージに基づいています。したがって、値を含む xml 項目があるとしますa。URI は http://someurl?q=a のようになりますが、dynamicUri はリソース チャネル識別子にしかできません。

ここでこれに関するいくつかの議論を見つけましたが、よく理解できず、「HttpProducer.HTTP_URI」は私のワークスペースでは利用できません。これにはどのキャメルパッケージが必要ですか?どうすればよいですか? プロセッサかもしれませんが、どうやって?

4

1 に答える 1

2

Camel のどのバージョンを使用していますか?

これらのキーの定数名の多くは、Camel 2.0 以降の org.apache.camel.Exchange クラスに移動されました。HTTP_URI 定数については、このクラスを見てください。これは、wiki ページ http://camel.apache.org/httpに記載されているものでもあります。

Content Enricher は動的 URI をサポートしていませんが、一部の Camel コンポーネントでは uri をヘッダーとして設定できます。camel-http など。つまり、定数 Exchange.HTTP_URI を使用して、uri をヘッダーとして提供できます。

ただし、Camel の受信者リストの EIP パターンは、URI を完全に動的に評価することを実際にサポートしており、集約もサポートしています。 http://camel.apache.org/recipient-list.html

したがって、次のようにソリューションを実装できます。

from("direct:x")
    .recipientList(header("dynamicUriHeader")).aggregationStrategy(new MyOwnAggregationStrategy())
    .to("direct:y");
于 2011-01-30T07:43:14.330 に答える