103.3. 移動および削除操作
移動または削除操作は、ルーティングが完了した後 (ポストコマンド) に実行されます。そのため、Exchange の処理中、ファイルはまだ受信トレイフォルダーにあります。
これを例で説明しましょう。
from("file://inbox?move=.done").to("bean:handleOrder");
from("file://inbox?move=.done").to("bean:handleOrder");
ファイルが inbox フォルダーにドロップされると、ファイルコンシューマーはこれに気づき、handleOrder Bean にルーティングされる新しい FileExchange を作成します。次に、Bean は File オブジェクトを処理します。この時点で、ファイルはまだ inbox フォルダーにあります。Bean が完了してルートが完了すると、ファイルコンシューマーは移動操作を実行し、ファイルを .done サブフォルダーに移動します。
move および preMove オプションは、ディレクトリー名と見なされます (ただし、File 言語 や Simple などの式を使用する場合は、式の評価結果が使用されるファイル名になります。
move=../backup/copy-of-${file:name}
move=../backup/copy-of-${file:name}
次に、使用する File 言語 で、使用するファイル名を返します)。これは、相対または絶対パスのいずれかです。相対の場合、ディレクトリーは、ファイルが消費されたフォルダー内のサブフォルダーとして作成されます。
デフォルトでは、Camel は消費されたファイルを、ファイルが消費されたディレクトリーに相対的な .camel サブフォルダーに移動します。
処理後にファイルを削除する場合、ルートは次のようになります。
from("file://inobox?delete=true").to("bean:handleOrder");
from("file://inobox?delete=true").to("bean:handleOrder");
処理 前 にファイルを移動する 事前 移動操作が導入されました。これにより、処理される前にこのサブフォルダーに移動されるときに、どのファイルがスキャンされたかをマークできます。
from("file://inbox?preMove=inprogress").to("bean:handleOrder");
from("file://inbox?preMove=inprogress").to("bean:handleOrder");
pre の動きと通常の動きを組み合わせることができます。
from("file://inbox?preMove=inprogress&move=.done").to("bean:handleOrder");
from("file://inbox?preMove=inprogress&move=.done").to("bean:handleOrder");
したがって、この状況では、ファイルは処理中は inprogress フォルダーにあり、処理後は .done フォルダーに移動されます。