スプリッターと同様に、1 つの入力を受け取り、複数の出力メッセージを生成する Camel コンポーネント/プロセッサーを実装しようとしています。Splitter と同様に、出力はルート内の次のプロセッサ/エンドポイントに送られる必要があります。
Splitter クラスと MulticastProcessor クラスを調べて、それらを再利用したり、同様のロジックを使用したりできるようにしました。私が理解したように、アイデアは、出力ごとに新しい Exchange を作成し、それらを発行することです。これを行うには、出力が書き込まれるエンドポイントを提供する必要があります。これは、Processor クラス内でエンドポイントを動的に作成すると機能します。私の要件は、ルートで構成されたエンドポイントに出力を送信することです。それは以下のルートにあり、mycomponent は file:output に (複数回) 書き込む必要があります。
<route>
<from uri="file:input"/>
<to uri="mycomponent:OrderFlow?multi.output=true"/>
<to uri="file:output" />
</route>
スプリッターの場合、出力プロセッサー/エンドポイントにアクセスできる SplitDefinition クラスによってインスタンス化されます。
a) プロセッサ内から、構成された出力プロセッサ/エンドポイントにアクセスできますか?
b) そうでない場合、プロセッサの ProcessorDefinition クラスを作成する必要がありますか? これに関する指針があれば役立ちます。
ペッターが以下に提案する2つの解決策は、
a) Producer テンプレートを挿入する b) 新しいコンポーネントを作成する代わりに、メソッド呼び出しで Splitter コンポーネントを使用する。