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