最初の質問:
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
それは「現在の取引所」ではありませんか? そうでない場合、「元の取引所」はどの取引所を表していますか? そして、彼らは「現在の交換」とはどういう意味ですか?