SpringDSLでラクダ2.10.3を使用しています。
CSVファイルのディレクトリを監視しています。各ファイルには、他のメタデータ(誰がそれを要求したかなど)とともに、何かをダウンロードする場所に関する情報が含まれています。
ファイルを消費し、HTTPComponentを使用してファイルで参照されているエンティティをダウンロードし、それをディスクに保存します(後で処理します)。次のようになります。
<route>
<from uri="file:/incoming"/>
<unmarshall ref="csv"/>
<recipientList><simple>${in.body[1]}</simple></recipientList>
<to uri="file:/attachemnts"/>
<to ref="furtherProcessing"/>
</route>
URLはCSVファイルの内容に基づいて動的であるため、recipientListを使用しています。HTTPComponentが交換のin.body(CSVファイルの内容の値)をHTTPサービスに送信しようとするため、上記は機能しません。
後で処理するときにCSVファイルの値が必要になるので、それらを吹き飛ばすことはできません。これを解決するための最初の試みは、CSVファイルのすべての値をヘッダーに移動し、本文をnullに設定して、HTTPComponentが文句を言わないようにすることでした(文句を言わなくても、元の値を保持する必要があります)。 CSVデータ)。これは機能しますが、実際にはルートが乱雑になります。ヘッダーがたくさんあり、それぞれを手動でコピーする必要があります。
ダウンロードを行うには、ある種のサイドルートが必要なようです。カスタムのaggregationStrategyでマルチキャストを使用することを考えました。次に、一方のエンドポイントをダウンロードし、もう一方のエンドポイントをノーオペレーションにしましたが、これはそれほどクリーンではありませんでした。また。
これをきれいに行う方法について誰かがアドバイスを持っています、私は本当に単純なものが欠けているように感じますか?