11

最初の質問:

enrich()との違いがよくわかりませんpollEnrich()。キャメルが使用する用語はあまり良くないかもしれません。

私はここで読んだ:http://camel.apache.org/content-enricher.html

エンリッチ DSL 要素を使用したコンテンツ エンリッチメント

Camel には DSL の 2 つのフレーバーのコンテンツ エンリッチャーが付属しています

  • 豊かにする
  • pollEnrich

エンリッチは Producer を使用して追加データを取得します。これは通常、たとえば外部 Web サービスを呼び出すなど、Request Reply メッセージングに使用されます。一方、pollEnrich は Polling Consumer を使用して追加データを取得します。これは通常、ファイルの読み取りや FTP ファイルのダウンロードなど、イベント メッセージのメッセージングに使用されます。

違いがわかりません。どちらも追加データ (Web サービス応答、FTP ファイル) を消費することで取得しているようです。では、なぜ彼らは、Web サービスの応答を取得するのは「プロデューサー」によって行われると言うのでしょうか?

2 番目の質問:

「Camel in action」の本のp。72 彼らは言う:

Enrich と pollEnrich は現在の交換の情報にアクセスできません

Enrich も pollEnrich も、現在の交換からの情報を活用することはできません。これは、たとえば、pollEnrich が特定のファイルを選択するために使用するファイル名ヘッダーを交換に保存できないことを意味します。Camel チームが解決策を見つけることができれば、これは将来変更される可能性があります。

ただし、集計戦略を実装するために、次のようなコード例を示しています。

public class ExampleAggregationStrategy implements AggregationStrategy {

    public Exchange aggregate(Exchange original, Exchange resource) {
        Object originalBody = original.getIn().getBody();
        Object resourceResponse = resource.getIn().getBody();
        Object mergeResult = ... // combine original body and resource response
        if (original.getPattern().isOutCapable()) {
            original.getOut().setBody(mergeResult);
        } else {
            original.getIn().setBody(mergeResult);
        }
        return original;
    }

}

この例では、彼らが にアクセスできることがわかりますが、Exchange originalそれは「現在の取引所」ではありませんか? そうでない場合、「元の取引所」はどの取引所を表していますか? そして、彼らは「現在の交換」とはどういう意味ですか?

4

1 に答える 1

24

違いは次のとおりです。

  • enrichは、着信 Exchange を別のサービス リクエストへのパラメータとして使用することを前提としています。たとえば、着信 Exchange はユーザー ID である可能性がありますが、実際にはユーザー オブジェクト全体が必要なため、enrichユーザー オブジェクトを返す REST サービスにユーザー ID を渡すことで、Exchange などになります。

  • pollEnrich着信 Exchange は、PollingConsumer にデータを検索して Exchange を作成するように指示する単純なトリガーであると想定しています (着信 Exchange の内容は無視されます)。たとえば、処理のためにファイルを取得する必要があるタイマーやその他のビジネス プロセス イベントがあるとします。つまり、着信 Exchange データは PollingConsumer を動的に構成するために使用されず、URI のみが使用されます。

とは言うものの、Camel 2.12 の時点では、両方の着信/返却 Exchange を組み合わせる集約戦略を指定するオプションがありますenrichpollEnrich

集計戦略を使用した pollEnrich の例については、この単体テストを参照してください

于 2013-10-01T17:54:47.123 に答える