同じラクダのコンテキストで 2 つの開始点を使用するラクダのプロトタイプに取り組んでいます。
最初のルートは、アプリケーションの「構成」に使用されるメッセージを消費します。メッセージは configService Bean を介して構成リポジトリにロードされます。
// read configuration files
from("file:data/config?noop=true&include=.*.xml")
.startupOrder(1)
.to("bean:configService?method=loadConfiguration")
.log("Configuration loaded");
2 番目のルートは、受信者リストの eip パターンを実装し、同じ構成リポジトリから動的に読み取られる多数の受信者に異なる種類の入力メッセージを配信します。
// process some source files (using configuration)
from("file:data/source?noop=true")
.startupOrder(2)
.unmarshal()
.to("setupProcessor") // set "recipients" header
.recipientList(header("recipients"))
// ...
ここで発生する問題は、それらを同期する方法です。そのため、最初のルートが新しいデータを処理している場合、2 番目のルートは「待機」します。
私は Apache Camel を初めて使用し、そのような問題に対処する方法についてかなり迷っています。提案をいただければ幸いです。